diff options
Diffstat (limited to 'mso-api-handlers/mso-api-handler-common/src/main/java/org/onap')
40 files changed, 3849 insertions, 0 deletions
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/beans/avpnbondingbeans/AVPNServiceNames.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/beans/avpnbondingbeans/AVPNServiceNames.java new file mode 100644 index 0000000000..ed4e8c9305 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/beans/avpnbondingbeans/AVPNServiceNames.java @@ -0,0 +1,44 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.beans.avpnbondingbeans; + +public enum AVPNServiceNames { + AVPN_BONDING_TO_COLLABORATE("AVPNBondingToCollaborate"), + AVPN_BONDING_TO_IP_FLEX_REACH("AVPNBondingToIPFlexReach"), + AVPN_BONDING_TO_IP_TOLL_FREE("AVPNBondingToIPTollFree"); + + private String serviceName; + + AVPNServiceNames(String serviceName){ + this.serviceName=serviceName; + } + + public String getServiceName() { + return serviceName; + } + + @Override + public String toString() { + return "AVPNServiceNames{" + + "serviceName='" + serviceName + '\'' + + '}'; + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/BpmnRequest.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/BpmnRequest.java new file mode 100644 index 0000000000..bc2e5b1893 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/BpmnRequest.java @@ -0,0 +1,252 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + +import org.onap.so.apihandler.common.CommonConstants; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; + +/** + * JavaBean JSON class for a "bpmnRequest" which contains the JSON payload that + * will be passed to the Camunda process + */ +@JsonPropertyOrder({CommonConstants.REQUEST_ID_VARIABLE, + CommonConstants.IS_BASE_VF_MODULE_VARIABLE, CommonConstants.RECIPE_TIMEOUT_VARIABLE, + CommonConstants.REQUEST_ACTION_VARIABLE, CommonConstants.SERVICE_INSTANCE_ID_VARIABLE, + CommonConstants.VNF_ID_VARIABLE, CommonConstants.VF_MODULE_ID_VARIABLE, + CommonConstants.VOLUME_GROUP_ID_VARIABLE, CommonConstants.NETWORK_ID_VARIABLE, + CommonConstants.SERVICE_TYPE_VARIABLE, CommonConstants.VNF_TYPE_VARIABLE, + CommonConstants.VF_MODULE_TYPE_VARIABLE, CommonConstants.NETWORK_TYPE_VARIABLE, + CommonConstants.REQUEST_DETAILS_VARIABLE}) +@JsonRootName(CommonConstants.CAMUNDA_ROOT_INPUT) +public class BpmnRequest { + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + private CamundaInput host; + + @JsonProperty(CommonConstants.REQUEST_ID_VARIABLE) + private CamundaInput requestId; + + @JsonProperty(CommonConstants.IS_BASE_VF_MODULE_VARIABLE) + private CamundaBooleanInput isBaseVfModule; + + @JsonProperty(CommonConstants.RECIPE_TIMEOUT_VARIABLE) + private CamundaIntegerInput recipeTimeout; + + @JsonProperty(CommonConstants.REQUEST_ACTION_VARIABLE) + private CamundaInput requestAction; + + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_VARIABLE) + private CamundaInput serviceInstanceId; + + @JsonProperty(CommonConstants.VNF_ID_VARIABLE) + private CamundaInput vnfId; + + @JsonProperty(CommonConstants.VF_MODULE_ID_VARIABLE) + private CamundaInput vfModuleId; + + @JsonProperty(CommonConstants.VOLUME_GROUP_ID_VARIABLE) + private CamundaInput volumeGroupId; + + @JsonProperty(CommonConstants.NETWORK_ID_VARIABLE) + private CamundaInput networkId; + + @JsonProperty(CommonConstants.SERVICE_TYPE_VARIABLE) + private CamundaInput serviceType; + + @JsonProperty(CommonConstants.VNF_TYPE_VARIABLE) + private CamundaInput vnfType; + + @JsonProperty(CommonConstants.VF_MODULE_TYPE_VARIABLE) + private CamundaInput vfModuleType; + + @JsonProperty(CommonConstants.NETWORK_TYPE_VARIABLE) + private CamundaInput networkType; + + @JsonProperty(CommonConstants.REQUEST_DETAILS_VARIABLE) + private CamundaInput requestDetails; + + public BpmnRequest() { + /* Empty constructor */ + + } + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + public CamundaInput getHost() { + return host; + } + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + public void setHost(CamundaInput host) { + this.host = host; + } + + @JsonProperty(CommonConstants.REQUEST_ID_VARIABLE) + public CamundaInput getRequestId() { + return requestId; + } + + @JsonProperty(CommonConstants.REQUEST_ID_VARIABLE) + public void setRequestId(CamundaInput requestId) { + this.requestId = requestId; + } + + @JsonProperty(CommonConstants.IS_BASE_VF_MODULE_VARIABLE) + public CamundaBooleanInput getIsBaseVfModule() { + return isBaseVfModule; + } + + @JsonProperty(CommonConstants.IS_BASE_VF_MODULE_VARIABLE) + public void setIsBaseVfModule(CamundaBooleanInput isBaseVfModule) { + this.isBaseVfModule = isBaseVfModule; + } + + @JsonProperty(CommonConstants.RECIPE_TIMEOUT_VARIABLE) + public CamundaIntegerInput getRecipeTimeout() { + return recipeTimeout; + } + + @JsonProperty(CommonConstants.RECIPE_TIMEOUT_VARIABLE) + public void setRecipeTimeout(CamundaIntegerInput recipeTimeout) { + this.recipeTimeout = recipeTimeout; + } + + @JsonProperty(CommonConstants.REQUEST_ACTION_VARIABLE) + public CamundaInput getRequestAction() { + return requestAction; + } + + @JsonProperty(CommonConstants.REQUEST_ACTION_VARIABLE) + public void setRequestAction(CamundaInput requestAction) { + this.requestAction = requestAction; + } + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_VARIABLE) + public CamundaInput getServiceInstanceId() { + return serviceInstanceId; + } + + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_VARIABLE) + public void setServiceInstanceId(CamundaInput serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + } + + @JsonProperty(CommonConstants.VNF_ID_VARIABLE) + public CamundaInput getVnfId() { + return vnfId; + } + + @JsonProperty(CommonConstants.VNF_ID_VARIABLE) + public void setVnfId(CamundaInput vnfId) { + this.vnfId = vnfId; + } + + @JsonProperty(CommonConstants.VF_MODULE_ID_VARIABLE) + public CamundaInput getVfModuleId() { + return vfModuleId; + } + + @JsonProperty(CommonConstants.VF_MODULE_ID_VARIABLE) + public void setVfModuleId(CamundaInput vfModuleId) { + this.vfModuleId = vfModuleId; + } + + @JsonProperty(CommonConstants.VOLUME_GROUP_ID_VARIABLE) + public CamundaInput getVolumeGroupId() { + return volumeGroupId; + } + + @JsonProperty(CommonConstants.VOLUME_GROUP_ID_VARIABLE) + public void setVolumeGroupId(CamundaInput volumeGroupId) { + this.volumeGroupId = volumeGroupId; + } + + @JsonProperty(CommonConstants.NETWORK_ID_VARIABLE) + public CamundaInput getNetworkId() { + return networkId; + } + + @JsonProperty(CommonConstants.NETWORK_ID_VARIABLE) + public void setNetworkId(CamundaInput networkId) { + this.networkId = networkId; + } + + @JsonProperty(CommonConstants.SERVICE_TYPE_VARIABLE) + public CamundaInput getServiceType() { + return serviceType; + } + + @JsonProperty(CommonConstants.SERVICE_TYPE_VARIABLE) + public void setServiceType(CamundaInput serviceType) { + this.serviceType = serviceType; + } + + @JsonProperty(CommonConstants.VNF_TYPE_VARIABLE) + public CamundaInput getVnfType() { + return vnfType; + } + + @JsonProperty(CommonConstants.VNF_TYPE_VARIABLE) + public void setVnfType(CamundaInput vnfType) { + this.vnfType = vnfType; + } + + @JsonProperty(CommonConstants.VF_MODULE_TYPE_VARIABLE) + public CamundaInput getVfModuleType() { + return vfModuleType; + } + + @JsonProperty(CommonConstants.VF_MODULE_TYPE_VARIABLE) + public void setVfModuleType(CamundaInput vfModuleType) { + this.vfModuleType = vfModuleType; + } + + @JsonProperty(CommonConstants.NETWORK_TYPE_VARIABLE) + public CamundaInput getNetworkType() { + return networkType; + } + + @JsonProperty(CommonConstants.NETWORK_TYPE_VARIABLE) + public void setNetworkType(CamundaInput networkType) { + this.networkType = networkType; + } + + @JsonProperty(CommonConstants.REQUEST_DETAILS_VARIABLE) + public CamundaInput getRequestDetails() { + return requestDetails; + } + + @JsonProperty(CommonConstants.REQUEST_DETAILS_VARIABLE) + public void setRequestDetails(CamundaInput requestDetails) { + this.requestDetails = requestDetails; + } + + + + + @Override + public String toString() { + + return "BpmnRequest"; + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaBooleanInput.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaBooleanInput.java new file mode 100644 index 0000000000..ea44375ff7 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaBooleanInput.java @@ -0,0 +1,72 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + + + +import org.onap.so.apihandler.common.CommonConstants; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * JavaBean JSON class for a "gMyServiceInput" which contains the xml payload that + * will be passed to the Camunda process + */ + + +public class CamundaBooleanInput { + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + private boolean value; + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + private String type = "Boolean"; + + + public CamundaBooleanInput() { + } + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + public boolean getValue() { + return value; + } + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + public void setValue(boolean value) { + this.value = value; + } + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + public String getType() { + return type; + } + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + public void setType(String type) { + this.type = type; + } + + @Override + public String toString() { + return "CamundaInput [value=" + value + ", type=" + type + "]"; + } + + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaBpmnRequestInput.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaBpmnRequestInput.java new file mode 100644 index 0000000000..25293c7807 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaBpmnRequestInput.java @@ -0,0 +1,71 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + + + +import org.onap.so.apihandler.common.CommonConstants; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * JavaBean JSON class for a "gMyServiceInput" which contains the xml payload that + * will be passed to the Camunda process + */ +public class CamundaBpmnRequestInput { + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + private BpmnRequest value; + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + private String type = "String"; + + + public CamundaBpmnRequestInput() { + /* Empty constructor */ + } + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + public BpmnRequest getValue() { + return value; + } + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + public void setValue(BpmnRequest value) { + this.value = value; + } + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + public String getType() { + return type; + } + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + public void setType(String type) { + this.type = type; + } + + @Override + public String toString() { + return "CamundaInput [value=" + value + ", type=" + type + "]"; + } + + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaInput.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaInput.java new file mode 100644 index 0000000000..29e72e005a --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaInput.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + + + + +import org.onap.so.apihandler.common.CommonConstants; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * JavaBean JSON class for a "gMyServiceInput" which contains the xml payload that + * will be passed to the Camunda process + * + */ + + +public class CamundaInput { + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + private String value; + + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + private String type = "String"; + + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + public String getValue() { + return value; + } + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + public String getType() { + return type; + } + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + public void setType(String type) { + this.type = type; + } + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return "CamundaInput [value=" + value + ", type=" + type + "]"; + } + + + + + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaIntegerInput.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaIntegerInput.java new file mode 100644 index 0000000000..5bcfc6fb53 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaIntegerInput.java @@ -0,0 +1,71 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + + + +import org.onap.so.apihandler.common.CommonConstants; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * JavaBean JSON class for a "gMyServiceInput" which contains the xml payload that + * will be passed to the Camunda process + */ +public class CamundaIntegerInput { + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + private int value; + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + private String type = "Integer"; + + + public CamundaIntegerInput() { + } + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + public int getValue() { + return value; + } + + @JsonProperty(CommonConstants.CAMUNDA_VALUE) + public void setValue(int value) { + this.value = value; + } + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + public String getType() { + return type; + } + + @JsonProperty(CommonConstants.CAMUNDA_TYPE) + public void setType(String type) { + this.type = type; + } + + @Override + public String toString() { + return "CamundaInput [value=" + Integer.toString(value) + ", type=" + type + "]"; + } + + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaMacroRequest.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaMacroRequest.java new file mode 100644 index 0000000000..c57c0965b9 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaMacroRequest.java @@ -0,0 +1,107 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; +import org.onap.so.apihandler.common.CommonConstants; + +/** + * POJO which encapsulates the fields required to create a JSON request to invoke generic macro BPEL. + */ +@JsonPropertyOrder({CommonConstants.G_REQUEST_ID, CommonConstants.G_ACTION}) +@JsonRootName(CommonConstants.CAMUNDA_ROOT_INPUT) +public class CamundaMacroRequest { + + @JsonProperty(CommonConstants.G_REQUEST_ID) + private CamundaInput requestId; + + @JsonProperty(CommonConstants.G_ACTION) + private CamundaInput action; + + @JsonProperty(CommonConstants.G_SERVICEINSTANCEID) + private CamundaInput serviceInstanceId; + + + /** + * Sets new requestId. + * + * @param requestId New value of requestId. + */ + public void setRequestId(CamundaInput requestId) { + this.requestId = requestId; + } + + /** + * Gets action. + * + * @return Value of action. + */ + public CamundaInput getAction() { + return action; + } + + /** + * Sets new action. + * + * @param action New value of action. + */ + public void setAction(CamundaInput action) { + this.action = action; + } + + /** + * Gets requestId. + * + * @return Value of requestId. + */ + public CamundaInput getRequestId() { + return requestId; + } + + /** + * Sets new serviceInstanceId. + * + * @param serviceInstanceId New value of serviceInstanceId. + */ + public void setServiceInstanceId(CamundaInput serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + } + + /** + * Gets serviceInstanceId. + * + * @return Value of serviceInstanceId. + */ + public CamundaInput getServiceInstanceId() { + return serviceInstanceId; + } + + @Override + public String toString() { + return "CamundaMacroRequest{" + + "requestId=" + requestId + + ", action=" + action + + ", serviceInstanceId=" + serviceInstanceId + + '}'; + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaMacroRequestSerializer.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaMacroRequestSerializer.java new file mode 100644 index 0000000000..81adb40498 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaMacroRequestSerializer.java @@ -0,0 +1,50 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +/** + * Class used to create data object and serialize it to JSON which the BPEL macro flow understands. + */ +public class CamundaMacroRequestSerializer { + + private CamundaMacroRequestSerializer(){} + + public static String getJsonRequest(String requestId, String action, String serviceInstanceId)throws JsonProcessingException{ + CamundaMacroRequest macroRequest = new CamundaMacroRequest(); + macroRequest.setAction(getCamundaInput(action)); + macroRequest.setRequestId(getCamundaInput(requestId)); + macroRequest.setServiceInstanceId(getCamundaInput(serviceInstanceId)); + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + return mapper.writeValueAsString(macroRequest); + } + + private static CamundaInput getCamundaInput(String value){ + CamundaInput input = new CamundaInput(); + input.setType("String"); + input.setValue(value); + return input; + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaRequest.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaRequest.java new file mode 100644 index 0000000000..48eeede7b3 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaRequest.java @@ -0,0 +1,135 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + + + + + +import org.onap.so.apihandler.common.CommonConstants; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; + +/** + * JavaBean JSON class for a "variables" which contains the xml payload that + * will be passed to the Camunda process + * + */ +@JsonPropertyOrder({ CommonConstants.CAMUNDA_SERVICE_INPUT, CommonConstants.CAMUNDA_HOST, + CommonConstants.SCHEMA_VERSION_HEADER, CommonConstants.REQUEST_ID_HEADER, CommonConstants.SERVICE_INSTANCE_ID_HEADER, + CommonConstants. REQUEST_TIMEOUT_HEADER, CommonConstants.CAMUNDA_SERVICE_INPUT}) +@JsonRootName(CommonConstants.CAMUNDA_ROOT_INPUT) +public class CamundaRequest { + + @JsonProperty(CommonConstants.CAMUNDA_SERVICE_INPUT) + private CamundaInput serviceInput; + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + private CamundaInput host; + + @JsonProperty(CommonConstants.SCHEMA_VERSION_HEADER) + private CamundaInput schema; + + @JsonProperty(CommonConstants.REQUEST_ID_HEADER) + private CamundaInput reqid; + + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_HEADER) + private CamundaInput svcid; + + @JsonProperty(CommonConstants.REQUEST_TIMEOUT_HEADER) + private CamundaInput timeout; + + public CamundaRequest() { + } + + @JsonProperty(CommonConstants.CAMUNDA_SERVICE_INPUT) + public CamundaInput getServiceInput() { + return serviceInput; + } + + @JsonProperty(CommonConstants.CAMUNDA_SERVICE_INPUT) + public void setServiceInput(CamundaInput serviceInput) { + this.serviceInput = serviceInput; + } + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + public CamundaInput getHost() { + return host; + } + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + public void setHost(CamundaInput host) { + this.host = host; + } + + @JsonProperty(CommonConstants.SCHEMA_VERSION_HEADER) + public CamundaInput getSchema() { + return schema; + } + + @JsonProperty(CommonConstants.SCHEMA_VERSION_HEADER) + public void setSchema(CamundaInput schema) { + this.schema = schema; + } + + @JsonProperty(CommonConstants.REQUEST_ID_HEADER) + public CamundaInput getReqid() { + return reqid; + } + + @JsonProperty(CommonConstants.REQUEST_ID_HEADER) + public void setReqid(CamundaInput reqid) { + this.reqid = reqid; + } + + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_HEADER) + public CamundaInput getSvcid() { + return svcid; + } + + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_HEADER) + public void setSvcid(CamundaInput svcid) { + this.svcid = svcid; + } + + + @JsonProperty(CommonConstants.REQUEST_TIMEOUT_HEADER) + public CamundaInput getTimeout() { + return timeout; + } + + @JsonProperty(CommonConstants.REQUEST_TIMEOUT_HEADER) + public void setTimeout(CamundaInput timeout) { + this.timeout = timeout; + } + + + + @Override + public String toString() { + return "CamundaRequest [serviceInput=" + serviceInput + ", host=" + + host + ", schema=" + schema + ", reqid=" + reqid + ", svcid=" + + svcid + ", timeout=" + timeout + "]"; + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaResponse.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaResponse.java new file mode 100644 index 0000000000..92f4542b82 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaResponse.java @@ -0,0 +1,96 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * JavaBean JSON class for a "variables" which contains the xml payload that + * will be passed to the Camunda process + * + */ + +public class CamundaResponse { + + @JsonProperty("response") + private String response; + @JsonProperty("messageCode") + private int messageCode; + @JsonProperty("message") + private String message; + @JsonProperty("processInstanceID") + private String processInstanceID; + @JsonProperty("variables") + private String variables; + + public String getProcessInstanceID() { + return processInstanceID; + } + + public void setProcessInstanceID(String processInstanceID) { + this.processInstanceID = processInstanceID; + } + + public String getVariables() { + return variables; + } + + public void setVariables(String variables) { + this.variables = variables; + } + + public CamundaResponse() { + } + + public String getResponse() { + return response; + } + + public void setResponse(String response) { + this.response = response; + } + + public int getMessageCode() { + return messageCode; + } + + public void setMessageCode(int messageCode) { + this.messageCode = messageCode; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Override + public String toString() { + return "CamundaResponse [response=" + response + ", messageCode=" + + messageCode + ", message=" + message + "]"; + } + + + + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaVIDRequest.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaVIDRequest.java new file mode 100644 index 0000000000..9099b48f11 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/CamundaVIDRequest.java @@ -0,0 +1,338 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + + +import org.onap.so.apihandler.common.CommonConstants; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonRootName; + +/** + * JavaBean JSON class for a "variables" which contains the JSON payload that + * will be passed to the Camunda process + */ +@JsonPropertyOrder({CommonConstants.CAMUNDA_SERVICE_INPUT, CommonConstants.REQUEST_ID_VARIABLE, + CommonConstants.REQUEST_ID_HEADER, + CommonConstants.IS_BASE_VF_MODULE_VARIABLE, CommonConstants.RECIPE_TIMEOUT_VARIABLE, + CommonConstants.REQUEST_ACTION_VARIABLE, CommonConstants.SERVICE_INSTANCE_ID_VARIABLE, + CommonConstants.CORRELATION_ID, CommonConstants.VNF_ID_VARIABLE, CommonConstants.VF_MODULE_ID_VARIABLE, + CommonConstants.VOLUME_GROUP_ID_VARIABLE, CommonConstants.NETWORK_ID_VARIABLE, + CommonConstants.CONFIGURATION_ID_VARIABLE, CommonConstants.SERVICE_TYPE_VARIABLE, + CommonConstants.VNF_TYPE_VARIABLE, CommonConstants.VF_MODULE_TYPE_VARIABLE, + CommonConstants.NETWORK_TYPE_VARIABLE, CommonConstants.CAMUNDA_SERVICE_INPUT, CommonConstants.RECIPE_PARAMS}) + +@JsonRootName(CommonConstants.CAMUNDA_ROOT_INPUT) +public class CamundaVIDRequest { + + @JsonProperty(CommonConstants.CAMUNDA_SERVICE_INPUT) + private CamundaInput serviceInput; + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + private CamundaInput host; + + @JsonProperty(CommonConstants.REQUEST_ID_VARIABLE) + private CamundaInput requestId; + + @JsonProperty(CommonConstants.REQUEST_ID_HEADER) + private CamundaInput msoRequestId; + + @JsonProperty(CommonConstants.IS_BASE_VF_MODULE_VARIABLE) + private CamundaBooleanInput isBaseVfModule; + + @JsonProperty(CommonConstants.RECIPE_TIMEOUT_VARIABLE) + private CamundaIntegerInput recipeTimeout; + + @JsonProperty(CommonConstants.REQUEST_ACTION_VARIABLE) + private CamundaInput requestAction; + + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_VARIABLE) + private CamundaInput serviceInstanceId; + + @JsonProperty(CommonConstants.CORRELATION_ID) + private CamundaInput correlationId; + + @JsonProperty(CommonConstants.VNF_ID_VARIABLE) + private CamundaInput vnfId; + + @JsonProperty(CommonConstants.VF_MODULE_ID_VARIABLE) + private CamundaInput vfModuleId; + + @JsonProperty(CommonConstants.VOLUME_GROUP_ID_VARIABLE) + private CamundaInput volumeGroupId; + + @JsonProperty(CommonConstants.NETWORK_ID_VARIABLE) + private CamundaInput networkId; + + @JsonProperty(CommonConstants.CONFIGURATION_ID_VARIABLE) + private CamundaInput configurationId; + + @JsonProperty(CommonConstants.SERVICE_TYPE_VARIABLE) + private CamundaInput serviceType; + + @JsonProperty(CommonConstants.VNF_TYPE_VARIABLE) + private CamundaInput vnfType; + + @JsonProperty(CommonConstants.VF_MODULE_TYPE_VARIABLE) + private CamundaInput vfModuleType; + + @JsonProperty(CommonConstants.NETWORK_TYPE_VARIABLE) + private CamundaInput networkType; + + @JsonProperty(CommonConstants.RECIPE_PARAMS) + private CamundaInput recipeParams; + + @JsonProperty(CommonConstants.API_VERSION) + private CamundaInput apiVersion; + + @JsonProperty(CommonConstants.ALACARTE) + private CamundaBooleanInput aLaCarte; + + @JsonProperty(CommonConstants.REQUEST_URI) + private CamundaInput requestUri; + + @JsonProperty(CommonConstants.CAMUNDA_SERVICE_INPUT) + public CamundaInput getServiceInput() { + return serviceInput; + } + + @JsonProperty(CommonConstants.CAMUNDA_SERVICE_INPUT) + public void setServiceInput(CamundaInput serviceInput) { + this.serviceInput = serviceInput; + } + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + public CamundaInput getHost() { + return host; + } + + @JsonProperty(CommonConstants.CAMUNDA_HOST) + public void setHost(CamundaInput host) { + this.host = host; + } + + @JsonProperty(CommonConstants.REQUEST_ID_VARIABLE) + public CamundaInput getRequestId() { + return requestId; + } + + @JsonProperty(CommonConstants.REQUEST_ID_VARIABLE) + public void setRequestId(CamundaInput requestId) { + this.requestId = requestId; + } + + @JsonProperty(CommonConstants.REQUEST_ID_HEADER) + public CamundaInput getMsoRequestId() { + return msoRequestId; + } + + @JsonProperty(CommonConstants.REQUEST_ID_HEADER) + public void setMsoRequestId(CamundaInput msoRequestIdp) { + this.msoRequestId = msoRequestIdp; + } + + @JsonProperty(CommonConstants.IS_BASE_VF_MODULE_VARIABLE) + public CamundaBooleanInput getIsBaseVfModule() { + return isBaseVfModule; + } + + @JsonProperty(CommonConstants.IS_BASE_VF_MODULE_VARIABLE) + public void setIsBaseVfModule(CamundaBooleanInput isBaseVfModule) { + this.isBaseVfModule = isBaseVfModule; + } + + @JsonProperty(CommonConstants.RECIPE_TIMEOUT_VARIABLE) + public CamundaIntegerInput getRecipeTimeout() { + return recipeTimeout; + } + + @JsonProperty(CommonConstants.RECIPE_TIMEOUT_VARIABLE) + public void setRecipeTimeout(CamundaIntegerInput recipeTimeout) { + this.recipeTimeout = recipeTimeout; + } + + @JsonProperty(CommonConstants.REQUEST_ACTION_VARIABLE) + public CamundaInput getRequestAction() { + return requestAction; + } + + @JsonProperty(CommonConstants.REQUEST_ACTION_VARIABLE) + public void setRequestAction(CamundaInput requestAction) { + this.requestAction = requestAction; + } + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_VARIABLE) + public CamundaInput getServiceInstanceId() { + return serviceInstanceId; + } + + @JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_VARIABLE) + public void setServiceInstanceId(CamundaInput serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + } + + @JsonProperty(CommonConstants.CORRELATION_ID) + public CamundaInput getCorrelationId() { + return correlationId; + } + + @JsonProperty(CommonConstants.CORRELATION_ID) + public void setCorrelationId(CamundaInput correlationId) { + this.correlationId = correlationId; + } + + @JsonProperty(CommonConstants.VNF_ID_VARIABLE) + public CamundaInput getVnfId() { + return vnfId; + } + + @JsonProperty(CommonConstants.VNF_ID_VARIABLE) + public void setVnfId(CamundaInput vnfId) { + this.vnfId = vnfId; + } + + @JsonProperty(CommonConstants.VF_MODULE_ID_VARIABLE) + public CamundaInput getVfModuleId() { + return vfModuleId; + } + + @JsonProperty(CommonConstants.VF_MODULE_ID_VARIABLE) + public void setVfModuleId(CamundaInput vfModuleId) { + this.vfModuleId = vfModuleId; + } + + @JsonProperty(CommonConstants.VOLUME_GROUP_ID_VARIABLE) + public CamundaInput getVolumeGroupId() { + return volumeGroupId; + } + + @JsonProperty(CommonConstants.VOLUME_GROUP_ID_VARIABLE) + public void setVolumeGroupId(CamundaInput volumeGroupId) { + this.volumeGroupId = volumeGroupId; + } + + @JsonProperty(CommonConstants.NETWORK_ID_VARIABLE) + public CamundaInput getNetworkId() { + return networkId; + } + + @JsonProperty(CommonConstants.NETWORK_ID_VARIABLE) + public void setNetworkId(CamundaInput networkId) { + this.networkId = networkId; + } + + @JsonProperty(CommonConstants.CONFIGURATION_ID_VARIABLE) + public CamundaInput getConfigurationId() { + return configurationId; + } + + @JsonProperty(CommonConstants.CONFIGURATION_ID_VARIABLE) + public void setConfigurationId(CamundaInput configurationId) { + this.configurationId = configurationId; + } + + @JsonProperty(CommonConstants.SERVICE_TYPE_VARIABLE) + public CamundaInput getServiceType() { + return serviceType; + } + + @JsonProperty(CommonConstants.SERVICE_TYPE_VARIABLE) + public void setServiceType(CamundaInput serviceType) { + this.serviceType = serviceType; + } + + @JsonProperty(CommonConstants.VNF_TYPE_VARIABLE) + public CamundaInput getVnfType() { + return vnfType; + } + + @JsonProperty(CommonConstants.VNF_TYPE_VARIABLE) + public void setVnfType(CamundaInput vnfType) { + this.vnfType = vnfType; + } + + @JsonProperty(CommonConstants.VF_MODULE_TYPE_VARIABLE) + public CamundaInput getVfModuleType() { + return vfModuleType; + } + + @JsonProperty(CommonConstants.VF_MODULE_TYPE_VARIABLE) + public void setVfModuleType(CamundaInput vfModuleType) { + this.vfModuleType = vfModuleType; + } + + @JsonProperty(CommonConstants.NETWORK_TYPE_VARIABLE) + public CamundaInput getNetworkType() { + return networkType; + } + + @JsonProperty(CommonConstants.NETWORK_TYPE_VARIABLE) + public void setNetworkType(CamundaInput networkType) { + this.networkType = networkType; + } + + @JsonProperty(CommonConstants.API_VERSION) + public CamundaInput getApiVersion() { + return apiVersion; + } + + @JsonProperty(CommonConstants.API_VERSION) + public void setApiVersion(CamundaInput apiVersion) { + this.apiVersion = apiVersion; + } + + @JsonProperty(CommonConstants.ALACARTE) + public CamundaBooleanInput getaLaCarte() { + return aLaCarte; + } + + @JsonProperty(CommonConstants.ALACARTE) + public void setaLaCarte(CamundaBooleanInput aLaCarte) { + this.aLaCarte = aLaCarte; + } + + @JsonProperty(CommonConstants.REQUEST_URI) + public CamundaInput getRequestUri() { + return requestUri; + } + + @JsonProperty(CommonConstants.REQUEST_URI) + public void setRequestUri(CamundaInput requestUri) { + this.requestUri = requestUri; + } + + public CamundaInput getRecipeParams() { + return recipeParams; + } + + public void setRecipeParams(CamundaInput recipeParams) { + this.recipeParams = recipeParams; + } + + @Override + public String toString() { + //return "CamundaRequest [requestId=" + + ", host=" + // + host + ", schema=" + schema + ", reqid=" + reqid + ", svcid=" + // + svcid + ", timeout=" + timeout + "]"; + return "CamundaRequest"; + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/Track.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/Track.java new file mode 100644 index 0000000000..3d4dc85089 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/camundabeans/Track.java @@ -0,0 +1,49 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.camundabeans; + +public class Track { + + String title; + String singer; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getSinger() { + return singer; + } + + public void setSinger(String singer) { + this.singer = singer; + } + + @Override + public String toString() { + return "Track [title=" + title + ", singer=" + singer + "]"; + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CamundaClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CamundaClient.java new file mode 100644 index 0000000000..7feb1ae758 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CamundaClient.java @@ -0,0 +1,278 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + + +import java.io.IOException; + +import javax.xml.bind.DatatypeConverter; + +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.onap.so.apihandler.camundabeans.CamundaBooleanInput; +import org.onap.so.apihandler.camundabeans.CamundaInput; +import org.onap.so.apihandler.camundabeans.CamundaIntegerInput; +import org.onap.so.apihandler.camundabeans.CamundaRequest; +import org.onap.so.apihandler.camundabeans.CamundaVIDRequest; +import org.onap.so.logger.MessageEnum; +import org.onap.so.logger.MsoLogger; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +public class CamundaClient extends RequestClient{ + private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH, CamundaClient.class); + private static final String CAMUNDA_URL_MESAGE = "Camunda url is: "; + + public CamundaClient() { + super(CommonConstants.CAMUNDA); + } + + + @Override + public HttpResponse post(String camundaReqXML, String requestId, + String requestTimeout, String schemaVersion, String serviceInstanceId, String action) + throws ClientProtocolException, IOException{ + HttpPost post = new HttpPost(url); + msoLogger.debug(CAMUNDA_URL_MESAGE + url); + String jsonReq = wrapRequest(camundaReqXML, requestId, serviceInstanceId, requestTimeout, schemaVersion); + + StringEntity input = new StringEntity(jsonReq); + input.setContentType(CommonConstants.CONTENT_TYPE_JSON); + msoLogger.info("Camunda Request Content: " + jsonReq); + String encryptedCredentials = null; + if(props!=null){ + encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH); + if(encryptedCredentials != null){ + String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY); + if(userCredentials != null){ + post.addHeader("Authorization", "Basic " + new String(DatatypeConverter.printBase64Binary(userCredentials.getBytes()))); + } + } + } + + post.setEntity(input); + HttpResponse response = client.execute(post); + msoLogger.debug("Response is: " + response); + + return response; + } + + @Override + public HttpResponse post(String jsonReq) + throws ClientProtocolException, IOException{ + HttpPost post = new HttpPost(url); + msoLogger.debug(CAMUNDA_URL_MESAGE + url); + //String jsonReq = wrapRequest(camundaReqXML, requestId, serviceInstanceId, requestTimeout, schemaVersion); + + StringEntity input = new StringEntity(jsonReq); + input.setContentType(CommonConstants.CONTENT_TYPE_JSON); + + String encryptedCredentials = null; + if(props!=null){ + encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH); + if(encryptedCredentials != null){ + String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY); + if(userCredentials != null){ + post.addHeader("Authorization", "Basic " + new String(DatatypeConverter.printBase64Binary(userCredentials.getBytes()))); + } + } + } + + post.setEntity(input); + HttpResponse response = client.execute(post); + msoLogger.debug("Response is: " + response); + + return response; + } + + public HttpResponse post(RequestClientParameter parameterObject) + throws ClientProtocolException, IOException{ + HttpPost post = new HttpPost(url); + msoLogger.debug("Camunda url is: "+ url); + String jsonReq = wrapVIDRequest(parameterObject.getRequestId(), parameterObject.isBaseVfModule(), parameterObject.getRecipeTimeout(), parameterObject.getRequestAction(), + parameterObject.getServiceInstanceId(), parameterObject.getCorrelationId(), parameterObject.getVnfId(), parameterObject.getVfModuleId(), parameterObject.getVolumeGroupId(), parameterObject.getNetworkId(), parameterObject.getConfigurationId(), + parameterObject.getServiceType(), parameterObject.getVnfType(), parameterObject.getVfModuleType(), parameterObject.getNetworkType(), parameterObject.getRequestDetails(), parameterObject.getApiVersion(), parameterObject.isaLaCarte(), parameterObject.getRequestUri(), parameterObject.getRecipeParamXsd()); + + StringEntity input = new StringEntity(jsonReq); + input.setContentType(CommonConstants.CONTENT_TYPE_JSON); + + String encryptedCredentials = null; + if(props!=null){ + encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH); + if(encryptedCredentials != null){ + String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY); + if(userCredentials != null){ + post.addHeader("Authorization", "Basic " + new String(DatatypeConverter.printBase64Binary(userCredentials.getBytes()))); + } + } + } + + post.setEntity(input); + HttpResponse response = client.execute(post); + msoLogger.debug("Response is: " + response); + + return response; + } + + @Override + public HttpResponse get() { + return null; + } + + protected String wrapRequest(String reqXML, String requestId, String serviceInstanceId, String requestTimeout, String schemaVersion){ + String jsonReq = null; + + try{ + CamundaRequest camundaRequest = new CamundaRequest(); + CamundaInput camundaInput = new CamundaInput(); + CamundaInput host = new CamundaInput(); + CamundaInput schema = new CamundaInput(); + CamundaInput reqid = new CamundaInput(); + CamundaInput svcid = new CamundaInput(); + CamundaInput timeout = new CamundaInput(); + camundaInput.setValue(StringUtils.defaultString(reqXML)); + host.setValue(parseURL()); + schema.setValue(StringUtils.defaultString(schemaVersion)); + reqid.setValue(requestId); + svcid.setValue(serviceInstanceId); + timeout.setValue(StringUtils.defaultString(requestTimeout)); + camundaRequest.setServiceInput(camundaInput); + camundaRequest.setHost(host); + camundaRequest.setReqid(reqid); + camundaRequest.setSvcid(svcid); + camundaRequest.setSchema(schema); + camundaRequest.setTimeout(timeout); + ObjectMapper mapper = new ObjectMapper(); + + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + + jsonReq = mapper.writeValueAsString(camundaRequest); + msoLogger.trace("request body is " + jsonReq); + }catch(Exception e){ + msoLogger.error(MessageEnum.APIH_WARP_REQUEST, "Camunda", "wrapRequest", MsoLogger.ErrorCode.BusinessProcesssError, "Error in APIH Warp request", e); + } + return jsonReq; + } + + + protected String wrapVIDRequest(String requestId, boolean isBaseVfModule, + int recipeTimeout, String requestAction, String serviceInstanceId, String correlationId, + String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId, + String serviceType, String vnfType, String vfModuleType, String networkType, + String requestDetails, String apiVersion, boolean aLaCarte, String requestUri, String paramXsd){ + String jsonReq = null; + + try{ + CamundaVIDRequest camundaRequest = new CamundaVIDRequest(); + CamundaInput serviceInput = new CamundaInput(); + CamundaInput host = new CamundaInput(); + CamundaInput requestIdInput= new CamundaInput(); + CamundaBooleanInput isBaseVfModuleInput = new CamundaBooleanInput(); + CamundaIntegerInput recipeTimeoutInput = new CamundaIntegerInput(); + CamundaInput requestActionInput = new CamundaInput(); + CamundaInput serviceInstanceIdInput = new CamundaInput(); + CamundaInput correlationIdInput = new CamundaInput(); + CamundaInput vnfIdInput = new CamundaInput(); + CamundaInput vfModuleIdInput = new CamundaInput(); + CamundaInput volumeGroupIdInput = new CamundaInput(); + CamundaInput networkIdInput = new CamundaInput(); + CamundaInput configurationIdInput = new CamundaInput(); + CamundaInput serviceTypeInput = new CamundaInput(); + CamundaInput vnfTypeInput = new CamundaInput(); + CamundaInput vfModuleTypeInput = new CamundaInput(); + CamundaInput networkTypeInput = new CamundaInput(); + CamundaBooleanInput aLaCarteInput = new CamundaBooleanInput(); + CamundaInput apiVersionInput = new CamundaInput(); + CamundaInput requestUriInput = new CamundaInput(); + CamundaInput recipeParamsInput = new CamundaInput(); + + //host.setValue(parseURL()); + requestIdInput.setValue(StringUtils.defaultString(requestId)); + isBaseVfModuleInput.setValue(isBaseVfModule); + recipeTimeoutInput.setValue(recipeTimeout); + requestActionInput.setValue(StringUtils.defaultString(requestAction)); + serviceInstanceIdInput.setValue(StringUtils.defaultString(serviceInstanceId)); + correlationIdInput.setValue(StringUtils.defaultString(correlationId)); + vnfIdInput.setValue(StringUtils.defaultString(vnfId)); + vfModuleIdInput.setValue(StringUtils.defaultString(vfModuleId)); + volumeGroupIdInput.setValue(StringUtils.defaultString(volumeGroupId)); + networkIdInput.setValue(StringUtils.defaultString(networkId)); + configurationIdInput.setValue(StringUtils.defaultString(configurationId)); + serviceTypeInput.setValue(StringUtils.defaultString(serviceType)); + vnfTypeInput.setValue(StringUtils.defaultString(vnfType)); + vfModuleTypeInput.setValue(StringUtils.defaultString(vfModuleType)); + networkTypeInput.setValue(StringUtils.defaultString(networkType)); + aLaCarteInput.setValue(aLaCarte); + apiVersionInput.setValue(StringUtils.defaultString(apiVersion)); + requestUriInput.setValue(StringUtils.defaultString(requestUri)); + recipeParamsInput.setValue(paramXsd); + + serviceInput.setValue(requestDetails); + camundaRequest.setServiceInput(serviceInput); + camundaRequest.setHost(host); + camundaRequest.setRequestId(requestIdInput); + camundaRequest.setMsoRequestId(requestIdInput); + camundaRequest.setIsBaseVfModule(isBaseVfModuleInput); + camundaRequest.setRecipeTimeout(recipeTimeoutInput); + camundaRequest.setRequestAction(requestActionInput); + camundaRequest.setServiceInstanceId(serviceInstanceIdInput); + camundaRequest.setCorrelationId(correlationIdInput); + camundaRequest.setVnfId(vnfIdInput); + camundaRequest.setVfModuleId(vfModuleIdInput); + camundaRequest.setVolumeGroupId(volumeGroupIdInput); + camundaRequest.setNetworkId(networkIdInput); + camundaRequest.setConfigurationId(configurationIdInput); + camundaRequest.setServiceType(serviceTypeInput); + camundaRequest.setVnfType(vnfTypeInput); + camundaRequest.setVfModuleType(vfModuleTypeInput); + camundaRequest.setNetworkType(networkTypeInput); + camundaRequest.setaLaCarte(aLaCarteInput); + camundaRequest.setApiVersion(apiVersionInput); + camundaRequest.setRequestUri(requestUriInput); + camundaRequest.setRecipeParams(recipeParamsInput); + + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + + jsonReq = mapper.writeValueAsString(camundaRequest); + msoLogger.trace("request body is " + jsonReq); + }catch(Exception e){ + msoLogger.error(MessageEnum.APIH_WARP_REQUEST, "Camunda", "wrapVIDRequest", MsoLogger.ErrorCode.BusinessProcesssError, "Error in APIH Warp request", e); + } + return jsonReq; + } + + private String parseURL(){ + String[] parts = url.split(":"); + String host = ""; + if(parts.length>=2){ + host = parts[1]; + if(host.length()>2){ + host = host.substring(2); + } + } + return host; + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CamundaTaskClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CamundaTaskClient.java new file mode 100644 index 0000000000..166a5c4d10 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CamundaTaskClient.java @@ -0,0 +1,93 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + +import java.io.IOException; + +import javax.xml.bind.DatatypeConverter; + +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.onap.so.logger.MsoLogger; + +public class CamundaTaskClient extends RequestClient{ + private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH, CamundaTaskClient.class); + + public CamundaTaskClient() { + super(CommonConstants.CAMUNDATASK); + } + + @Override + public HttpResponse post(String jsonReq) throws IOException{ + HttpPost post = new HttpPost(url); + msoLogger.debug("Camunda Task url is: "+ url); + + StringEntity input = new StringEntity(jsonReq); + input.setContentType(CommonConstants.CONTENT_TYPE_JSON); + + String encryptedCredentials; + if(props!=null){ + encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH); + if(encryptedCredentials != null){ + String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY); + if(userCredentials != null){ + post.addHeader("Authorization", "Basic " + DatatypeConverter + .printBase64Binary(userCredentials.getBytes())); + } + } + } + + post.setEntity(input); + return client.execute(post); + } + + @Override + public HttpResponse post(String camundaReqXML, String requestId, + String requestTimeout, String schemaVersion, String serviceInstanceId, String action) { + throw new UnsupportedOperationException("Method not supported."); + } + + @Override + public HttpResponse post(RequestClientParameter params) { + throw new UnsupportedOperationException("Method not supported."); + } + + @Override + public HttpResponse get() throws IOException { + HttpGet get = new HttpGet(url); + msoLogger.debug("Camunda Task url is: "+ url); + String encryptedCredentials; + if(props!=null){ + encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH); + if(encryptedCredentials != null){ + String userCredentials = getEncryptedPropValue(encryptedCredentials, CommonConstants.DEFAULT_BPEL_AUTH, CommonConstants.ENCRYPTION_KEY); + if(userCredentials != null){ + get.addHeader("Authorization", "Basic " + new String(DatatypeConverter + .printBase64Binary(userCredentials.getBytes()))); + } + } + } + return client.execute(get); + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CommonConstants.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CommonConstants.java new file mode 100644 index 0000000000..d5540ddbaa --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/CommonConstants.java @@ -0,0 +1,88 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + + +public final class CommonConstants { + + public static final String DEFAULT_BPEL_AUTH = "admin:admin"; + public static final String ENCRYPTION_KEY = "aa3871669d893c7fb8abbcda31b88b4f"; + + public static final String REQUEST_ID_HEADER = "mso-request-id"; + public static final String REQUEST_TIMEOUT_HEADER = "mso-service-request-timeout"; + public static final String SCHEMA_VERSION_HEADER = "mso-schema-version"; + public static final String SERVICE_INSTANCE_ID_HEADER = "mso-service-instance-id"; + public static final String ACTION_HEADER = "mso-action"; + + public static final String G_REQUEST_ID = "mso-request-id"; + public static final String G_SERVICEINSTANCEID = "serviceInstanceId"; + public static final String G_ACTION = "gAction"; + + public static final String CAMUNDA_SERVICE_INPUT = "bpmnRequest"; + public static final String CAMUNDA_ROOT_INPUT = "variables"; + public static final String CONTENT_TYPE_JSON= "application/json"; + public static final String CAMUNDA_TYPE = "type"; + public static final String CAMUNDA_VALUE = "value"; + public static final String CAMUNDA_URL = "mso.camundaURL"; + public static final String CAMUNDA_AUTH = "mso.camundaAuth"; + public static final String BPEL_SEARCH_STR = "active-bpel"; + public static final String TASK_SEARCH_STR = "task"; + public static final String BPEL_URL = "bpelURL"; + public static final String BPEL_AUTH = "bpelAuth"; + public static final int BPEL = 0; + public static final int CAMUNDA = 1; + public static final int CAMUNDATASK = 2; + public static final String CAMUNDA_HOST = "host"; + public static final String REQUEST_ID_VARIABLE = "requestId"; + public static final String IS_BASE_VF_MODULE_VARIABLE = "isBaseVfModule"; + public static final String RECIPE_TIMEOUT_VARIABLE = "recipeTimeout"; + public static final String REQUEST_ACTION_VARIABLE = "requestAction"; + public static final String SERVICE_INSTANCE_ID_VARIABLE = "serviceInstanceId"; + public static final String CORRELATION_ID = "correlationId"; + public static final String VNF_ID_VARIABLE = "vnfId"; + public static final String VF_MODULE_ID_VARIABLE = "vfModuleId"; + public static final String VOLUME_GROUP_ID_VARIABLE = "volumeGroupId"; + public static final String NETWORK_ID_VARIABLE = "networkId"; + public static final String CONFIGURATION_ID_VARIABLE = "configurationId"; + public static final String SERVICE_TYPE_VARIABLE = "serviceType"; + public static final String VNF_TYPE_VARIABLE = "vnfType"; + public static final String VF_MODULE_TYPE_VARIABLE = "vfModuleType"; + public static final String NETWORK_TYPE_VARIABLE = "networkType"; + public static final String REQUEST_DETAILS_VARIABLE = "requestDetails"; + public static final String ALACARTE_ORCHESTRATION = "mso.infra.default.alacarte.orchestrationUri"; + public static final String ALACARTE_RECIPE_TIMEOUT = "mso.infra.default.alacarte.recipeTimeout"; + public static final String RECIPE_PARAMS = "recipeParams"; + public static final String ALACARTE_TEST_API = "mso.infra.default.alacarte.testApi"; + public static final String MACRO_TEST_API = "mso.infra.service.macro.default.testApi"; + public static final String ALACARTE = "aLaCarte"; + public static final String API_VERSION = "apiVersion"; + public static final String REQUEST_URI = "requestUri"; + public static final String API_MINOR_VERSION = "mso.infra.default.versions.apiMinorVersion"; + public static final String API_PATCH_VERSION = "mso.infra.default.versions.apiPatchVersion"; + public static final String X_TRANSACTION_ID = "X-TransactionID"; + public static final String X_MINOR_VERSION = "X-MinorVersion"; + public static final String X_PATCH_VERSION = "X-PatchVersion"; + public static final String X_LATEST_VERSION = "X-LatestVersion"; + + private CommonConstants () { + // prevent creating an instance of this class + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/ErrorNumbers.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/ErrorNumbers.java new file mode 100644 index 0000000000..5d755b9529 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/ErrorNumbers.java @@ -0,0 +1,77 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + +public final class ErrorNumbers { + + private ErrorNumbers() { + } + + public static final String REQUEST_FAILED_SCHEMA_VALIDATION = "1000"; + public static final String RECIPE_DOES_NOT_EXIST = "1010"; + public static final String VFMODULE_TYPE_DOES_NOT_EXIST = "1011"; + public static final String REQUEST_DOES_NOT_EXIST = "1012"; + public static final String SERVICE_DOES_NOT_EXIST = "1013"; + public static final String SERVICE_PARAMETERS_FAILED_SCHEMA_VALIDATION = "1020"; + public static final String LOCKED_SAME_SERVICE_TYPE_AND_REQUEST_ACTION = "1030"; + public static final String LOCKED_CANCEL_ON_REQUEST_IN_PROGRESS = "1031"; + public static final String LOCKED_REQUEST_IN_PROGRESS_TIMEOUT = "1032"; + public static final String LOCKED_NOT_ALLOWED_FOR_REQUEST_IN_PROGRESS = "1033"; + public static final String WITHDRAW_AFTER_COMPLETE = "1034"; + public static final String COMPLETE_AFTER_WITHDRAW = "1035"; // NOT USED + public static final String REQUEST_PREVIOUSLY_COMPLETED = "1036"; + public static final String CANNOT_RETRY_FINAL_ACTIVATION = "1037"; + public static final String PREVIOUSLY_COMPLETED_WITH_DIFF_ORDER_VERSION = "1038"; + public static final String LOCKED_DIFFERENT_REQUEST_ACTION = "1040"; + public static final String LOCKED_DIFF_REQUEST_ACTION_SAME_SERVICE_INSTANCE_ID = "1041"; + public static final String LOCKED_DIFFERENT_REQUEST_SAME_VPN_ID = "1042"; + public static final String REQUEST_TIMED_OUT = "1050"; + + + public static final String DISCONNECT_ALREADY_COMPLETE = "1100"; + public static final String CANCEL_ALREADY_COMPLETE = "1110"; + + public static final String LOCKED_CREATE_ON_THE_SAME_VNF_NAME_IN_PROGRESS = "1400"; + public static final String LOCKED_SAME_ACTION_AND_VNF_ID = "1410"; + + public static final String ERROR_FROM_BPEL = "2000"; + public static final String NO_COMMUNICATION_TO_BPEL = "2010"; + public static final String NO_RESPONSE_FROM_BPEL = "2020"; + + public static final String COULD_NOT_WRITE_TO_REQUESTS_DB = "4000"; + public static final String NO_COMMUNICATION_TO_REQUESTS_DB = "4010"; + public static final String NO_COMMUNICATION_TO_CATALOG_DB = "4020"; + public static final String ERROR_FROM_CATALOG_DB = "4030"; + + public static final String ERROR_FROM_SDNC = "5300"; + public static final String NO_COMMUNICATION_TO_SDNC = "5310"; + public static final String NO_RESPONSE_FROM_SDNC = "5320"; + + public static final String NO_COMMUNICATION_TO_SDNC_ADAPTER = "7000"; + public static final String NO_RESPONSE_FROM_SDNC_ADAPTER = "7010"; + public static final String ERROR_FROM_SDNC_ADAPTER = "7020"; + + public static final String SVC_GENERAL_SERVICE_ERROR = "SVC0001"; + public static final String SVC_BAD_PARAMETER = "SVC0002"; + public static final String SVC_NO_SERVER_RESOURCES = "SVC1000"; + public static final String SVC_DETAILED_SERVICE_ERROR = "SVC2000"; + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/LSInputImpl.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/LSInputImpl.java new file mode 100644 index 0000000000..60473fb8c4 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/LSInputImpl.java @@ -0,0 +1,119 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + + +import java.io.InputStream; +import java.io.Reader; + +import org.w3c.dom.ls.LSInput; + +public class LSInputImpl implements LSInput { + + protected String fPublicId; + protected String fSystemId; + protected String fBaseSystemId; + protected InputStream fByteStream; + protected Reader fCharStream; + protected String fData; + protected String fEncoding; + protected boolean fCertifiedText; + + @Override + public InputStream getByteStream () { + return fByteStream; + } + + @Override + public void setByteStream (InputStream byteStream) { + fByteStream = byteStream; + } + + @Override + public Reader getCharacterStream () { + return fCharStream; + } + + @Override + public void setCharacterStream (Reader characterStream) { + fCharStream = characterStream; + } + + @Override + public String getStringData () { + return fData; + } + + @Override + public void setStringData (String stringData) { + fData = stringData; + } + + @Override + public String getEncoding () { + return fEncoding; + } + + @Override + public void setEncoding (String encoding) { + fEncoding = encoding; + } + + @Override + public String getPublicId () { + return fPublicId; + } + + @Override + public void setPublicId (String publicId) { + fPublicId = publicId; + } + + @Override + public String getSystemId () { + return fSystemId; + } + + @Override + public void setSystemId (String systemId) { + fSystemId = systemId; + } + + @Override + public String getBaseURI () { + return fBaseSystemId; + } + + @Override + public void setBaseURI (String baseURI) { + fBaseSystemId = baseURI; + } + + @Override + public boolean getCertifiedText () { + return fCertifiedText; + } + + @Override + public void setCertifiedText (boolean certifiedText) { + fCertifiedText = certifiedText; + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/PathResourceResolver.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/PathResourceResolver.java new file mode 100644 index 0000000000..4e37561891 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/PathResourceResolver.java @@ -0,0 +1,63 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.InputStreamReader; + +import org.onap.so.logger.MsoLogger; +import org.w3c.dom.ls.LSInput; +import org.w3c.dom.ls.LSResourceResolver; + +public class PathResourceResolver implements LSResourceResolver { + + private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH, PathResourceResolver.class); + + private String path; + + public PathResourceResolver(String path) { + + this.path = path; + } + + @Override + public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) { + + LSInputImpl input = new LSInputImpl(); + + InputStream stream = null; + try { + stream = new FileInputStream(path + systemId); + } catch (FileNotFoundException e) { + msoLogger.debug ("Could not resolve resource based on file: " + path + systemId, e); + } + + input.setPublicId(publicId); + input.setSystemId(systemId); + input.setBaseURI(baseURI); + input.setCharacterStream(new InputStreamReader(stream)); + + return input; + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClient.java new file mode 100644 index 0000000000..ca1ad7a277 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClient.java @@ -0,0 +1,102 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + +import java.io.IOException; +import java.security.GeneralSecurityException; + +import org.apache.http.HttpResponse; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.onap.so.logger.MsoLogger; +import org.onap.so.utils.CryptoUtils; +import org.springframework.core.env.Environment; + +public abstract class RequestClient { + private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH,RequestClient.class); + protected Environment props; + protected String url; + protected HttpClient client; + private int type; + + public RequestClient(int type){ + this.type = type; + } + + public void setProps(Environment env) { + this.props = env; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getUrl() { + return url; + } + + public int getType(){ + return type; + } + + public HttpClient getClient() { + return client; + } + + public void setClient(HttpClient client) { + this.client = client; + } + + public abstract HttpResponse post(String request, String requestId, String requestTimeout, String schemaVersion, String serviceInstanceId, String action) throws IOException; + + public abstract HttpResponse post(String request) throws ClientProtocolException, IOException; + + public abstract HttpResponse post(RequestClientParameter parameterObject) throws ClientProtocolException, IOException; + + public abstract HttpResponse get() + throws IOException; + + protected String decryptPropValue(String prop, String defaultValue, String encryptionKey) { + try { + String result = CryptoUtils.decrypt(prop, encryptionKey); + return result; + } + catch (GeneralSecurityException e) { + msoLogger.debug("Security exception", e); + } + return defaultValue; + } + + protected String getEncryptedPropValue (String prop, String defaultValue, String encryptionKey) { + try { + String result = CryptoUtils.decrypt(prop, encryptionKey); + return result; + } + catch (GeneralSecurityException e) { + msoLogger.debug("Security exception", e); + } + return defaultValue; + } + + + + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClientFactory.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClientFactory.java new file mode 100644 index 0000000000..e94f186c60 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClientFactory.java @@ -0,0 +1,68 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + + + + +import org.apache.http.impl.client.DefaultHttpClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Component; + +@Component +public class RequestClientFactory { + + @Autowired + private Environment env; + + //based on URI, returns BPEL, CamundaTask or Camunda client + public RequestClient getRequestClient(String orchestrationURI) throws IllegalStateException{ + RequestClient retClient; + + String url; + if(orchestrationURI.contains(CommonConstants.TASK_SEARCH_STR)){ + url = env.getProperty(CommonConstants.CAMUNDA_URL) + orchestrationURI; + retClient = new CamundaTaskClient(); + } + else{ + url = env.getProperty(CommonConstants.CAMUNDA_URL) + orchestrationURI; + retClient = new CamundaClient(); + } + retClient.setClient(new DefaultHttpClient()); + retClient.setProps(env); + retClient.setUrl(url); + return retClient; + + } + + public Environment getEnv() { + return env; + } + + public void setEnv(Environment env) { + this.env = env; + } + + + + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClientParameter.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClientParameter.java new file mode 100644 index 0000000000..89db934985 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/RequestClientParameter.java @@ -0,0 +1,279 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + +public class RequestClientParameter { + + private String requestId; + private boolean isBaseVfModule; + private int recipeTimeout; + private String requestAction; + private String serviceInstanceId; + private String correlationId; + private String vnfId; + private String vfModuleId; + private String volumeGroupId; + private String networkId; + private String configurationId; + private String serviceType; + private String vnfType; + private String vfModuleType; + private String networkType; + private String requestDetails; + private String apiVersion; + private boolean aLaCarte; + private String recipeParamXsd; + private String requestUri; + + private RequestClientParameter(Builder builder) { + requestId = builder.requestId; + isBaseVfModule = builder.isBaseVfModule; + recipeTimeout = builder.recipeTimeout; + requestAction = builder.requestAction; + serviceInstanceId = builder.serviceInstanceId; + correlationId = builder.correlationId; + vnfId = builder.vnfId; + vfModuleId = builder.vfModuleId; + volumeGroupId = builder.volumeGroupId; + networkId = builder.networkId; + configurationId = builder.configurationId; + serviceType = builder.serviceType; + vnfType = builder.vnfType; + vfModuleType = builder.vfModuleType; + networkType = builder.networkType; + requestDetails = builder.requestDetails; + recipeParamXsd = builder.recipeParamXsd; + apiVersion = builder.apiVersion; + aLaCarte = builder.aLaCarte; + requestUri = builder.requestUri; + + } + + public String getRequestId() { + return requestId; + } + + public boolean isBaseVfModule() { + return isBaseVfModule; + } + + public int getRecipeTimeout() { + return recipeTimeout; + } + + public String getRequestAction() { + return requestAction; + } + + public String getServiceInstanceId() { + return serviceInstanceId; + } + + public String getCorrelationId() { + return correlationId; + } + + public String getVnfId() { + return vnfId; + } + + public String getVfModuleId() { + return vfModuleId; + } + + public String getVolumeGroupId() { + return volumeGroupId; + } + + public String getNetworkId() { + return networkId; + } + + public String getConfigurationId() { + return configurationId; + } + + public String getServiceType() { + return serviceType; + } + + public String getVnfType() { + return vnfType; + } + + public String getVfModuleType() { + return vfModuleType; + } + + public String getNetworkType() { + return networkType; + } + + public String getRequestDetails() { + return requestDetails; + } + + public String getRecipeParamXsd() { + return recipeParamXsd; + } + + public String getApiVersion() { + return apiVersion; + } + + public boolean isaLaCarte() { + return aLaCarte; + } + + public String getRequestUri() { + return requestUri; + } + + public static class Builder { + private String requestId; + private boolean isBaseVfModule = false; + private int recipeTimeout; + private String requestAction; + private String serviceInstanceId; + private String correlationId; + private String vnfId; + private String vfModuleId; + private String volumeGroupId; + private String networkId; + private String configurationId; + private String serviceType; + private String vnfType; + private String vfModuleType; + private String networkType; + private String requestDetails; + private String apiVersion; + private boolean aLaCarte = false; + private String recipeParamXsd; + private String requestUri; + + public Builder setRequestId(String requestId) { + this.requestId = requestId; + return this; + } + + public Builder setBaseVfModule(boolean baseVfModule) { + isBaseVfModule = baseVfModule; + return this; + } + + public Builder setRecipeTimeout(int recipeTimeout) { + this.recipeTimeout = recipeTimeout; + return this; + } + + public Builder setRequestAction(String requestAction) { + this.requestAction = requestAction; + return this; + } + + public Builder setServiceInstanceId(String serviceInstanceId) { + this.serviceInstanceId = serviceInstanceId; + return this; + } + + public Builder setCorrelationId(String correlationId) { + this.correlationId = correlationId; + return this; + } + + public Builder setVnfId(String vnfId) { + this.vnfId = vnfId; + return this; + } + + public Builder setVfModuleId(String vfModuleId) { + this.vfModuleId = vfModuleId; + return this; + } + + public Builder setVolumeGroupId(String volumeGroupId) { + this.volumeGroupId = volumeGroupId; + return this; + } + + public Builder setNetworkId(String networkId) { + this.networkId = networkId; + return this; + } + + public Builder setConfigurationId(String configurationId) { + this.configurationId = configurationId; + return this; + } + + public Builder setServiceType(String serviceType) { + this.serviceType = serviceType; + return this; + } + + public Builder setVnfType(String vnfType) { + this.vnfType = vnfType; + return this; + } + + public Builder setVfModuleType(String vfModuleType) { + this.vfModuleType = vfModuleType; + return this; + } + + public Builder setNetworkType(String networkType) { + this.networkType = networkType; + return this; + } + + public Builder setRequestDetails(String requestDetails) { + this.requestDetails = requestDetails; + return this; + } + + public Builder setRecipeParamXsd(String recipeParamXsd) { + this.recipeParamXsd = recipeParamXsd; + return this; + } + + public Builder setApiVersion(String apiVersion) { + this.apiVersion = apiVersion; + return this; + } + + public Builder setALaCarte(boolean aLaCarte) { + this.aLaCarte = aLaCarte; + return this; + } + + public Builder setRequestUri(String requestUri) { + this.requestUri = requestUri; + return this; + } + + public RequestClientParameter build(){ + return new RequestClientParameter(this); + } + } + + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/ResponseHandler.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/ResponseHandler.java new file mode 100644 index 0000000000..fc6da3fa7d --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/ResponseHandler.java @@ -0,0 +1,221 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + + +import java.io.IOException; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.util.EntityUtils; +import org.onap.so.apihandler.camundabeans.CamundaResponse; +import org.onap.so.apihandlerinfra.Constants; +import org.onap.so.apihandlerinfra.exceptions.ApiException; +import org.onap.so.apihandlerinfra.exceptions.BPMNFailureException; +import org.onap.so.apihandlerinfra.exceptions.ValidateException; +import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo; +import org.onap.so.logger.MessageEnum; +import org.onap.so.logger.MsoLogger; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class ResponseHandler { + + private CamundaResponse response; + private int status; + private String responseBody=""; + private HttpResponse httpResponse; + private int type; + private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH, ResponseHandler.class); + + public ResponseHandler(HttpResponse httpResponse, int type) throws ApiException{ + this.httpResponse = httpResponse; + this.type=type; + parseResponse(); + } + + + private void parseResponse() throws ApiException{ + int statusCode = httpResponse.getStatusLine().getStatusCode(); + status = setStatus(statusCode); + if(type==CommonConstants.CAMUNDA){ + parseCamunda(); + }else if(type==CommonConstants.CAMUNDATASK){ + parseCamundaTask(); + }else { + parseBpel(); + } + + } + + + + private void parseCamunda() throws ApiException{ + try{ + HttpEntity entity = httpResponse.getEntity(); + responseBody = EntityUtils.toString(entity); + } catch (IOException e) { + ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_VALIDATION_ERROR, MsoLogger.ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); + + + ValidateException validateException = new ValidateException.Builder("IOException getting Camunda response body", HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e) + .errorInfo(errorLoggerInfo).build(); + throw validateException; + } + + ObjectMapper mapper = new ObjectMapper(); + try { + response = mapper.readValue(responseBody, CamundaResponse.class); + } catch (IOException e) { + ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, MsoLogger.ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build(); + + + ValidateException validateException = new ValidateException.Builder("JSON Object Mapping Request", HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e) + .errorInfo(errorLoggerInfo).build(); + throw validateException; + } + if(response!=null){ + responseBody = response.getResponse(); + }else{ + ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_ERROR_FROM_BPEL_SERVER, MsoLogger.ErrorCode.BusinessProcesssError) + .targetEntity("Camunda").targetServiceName("parseCamunda").build(); + BPMNFailureException bpmnFailureException = new BPMNFailureException.Builder(String.valueOf(status), status, ErrorNumbers.ERROR_FROM_BPEL) + .errorInfo(errorLoggerInfo).build(); + } + } + + private void parseBpel() throws ApiException{ + + HttpEntity bpelEntity = httpResponse.getEntity(); + + try { + if (bpelEntity != null) { + responseBody = EntityUtils.toString(bpelEntity); + + } + }catch(IOException e){ + ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_GENERAL_EXCEPTION, MsoLogger.ErrorCode.DataError).build(); + ValidateException validateException = new ValidateException.Builder("Could not convert BPEL response to string", HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e) + .errorInfo(errorLoggerInfo).build(); + throw validateException; + } + if(status!=HttpStatus.SC_ACCEPTED){ + ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_ERROR_FROM_BPEL_SERVER, MsoLogger.ErrorCode.BusinessProcesssError) + .targetEntity("BPEL").targetServiceName("parseBpel").build(); + + + BPMNFailureException bpmnFailureException = new BPMNFailureException.Builder(String.valueOf(status), status, ErrorNumbers.ERROR_FROM_BPEL) + .errorInfo(errorLoggerInfo).build(); + + throw bpmnFailureException; + } + + } + + private void parseCamundaTask() throws ApiException{ + + HttpEntity camundataskEntity = httpResponse.getEntity(); + + try { + if (camundataskEntity != null) { + responseBody = EntityUtils.toString(camundataskEntity); + } + }catch(IOException e) { + ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_GENERAL_EXCEPTION, MsoLogger.ErrorCode.DataError).build(); + + + ValidateException validateException = new ValidateException.Builder("Could not convert CamundaTask response to string", HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e) + .errorInfo(errorLoggerInfo).build(); + throw validateException; + } + if(status!=HttpStatus.SC_NO_CONTENT && status != HttpStatus.SC_ACCEPTED){ + ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_ERROR_FROM_BPEL_SERVER, MsoLogger.ErrorCode.BusinessProcesssError) + .targetEntity("CAMUNDATASK").targetServiceName("parseCamundaTask").build(); + + + BPMNFailureException bpmnFailureException = new BPMNFailureException.Builder(String.valueOf(status), status, ErrorNumbers.ERROR_FROM_BPEL) + .errorInfo(errorLoggerInfo).build(); + + throw bpmnFailureException; + } + + } + + private int setStatus(int statusCode){ + int httpStatus; + switch(statusCode) { + case HttpStatus.SC_ACCEPTED: + case HttpStatus.SC_OK: + httpStatus = HttpStatus.SC_ACCEPTED; + break; + case HttpStatus.SC_BAD_REQUEST: + httpStatus = HttpStatus.SC_BAD_REQUEST; + break; + case HttpStatus.SC_UNAUTHORIZED: + case HttpStatus.SC_FORBIDDEN: + httpStatus = HttpStatus.SC_INTERNAL_SERVER_ERROR; + break; + case HttpStatus.SC_NOT_FOUND: + httpStatus = HttpStatus.SC_NOT_IMPLEMENTED; + break; + case HttpStatus.SC_INTERNAL_SERVER_ERROR: + httpStatus = HttpStatus.SC_BAD_GATEWAY; + break; + case HttpStatus.SC_SERVICE_UNAVAILABLE: + httpStatus = HttpStatus.SC_SERVICE_UNAVAILABLE; + break; + case HttpStatus.SC_NO_CONTENT: + httpStatus = HttpStatus.SC_NO_CONTENT; + break; + default: + httpStatus = HttpStatus.SC_INTERNAL_SERVER_ERROR; + break; + } + return httpStatus; + } + + + public CamundaResponse getResponse() { + return response; + } + + + public void setResponse(CamundaResponse response) { + this.response = response; + } + + + public String getResponseBody() { + return responseBody; + } + + + public void setResponseBody(String responseBody) { + this.responseBody = responseBody; + } + + + public int getStatus() { + return status; + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/XMLValidator.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/XMLValidator.java new file mode 100644 index 0000000000..3c72e479c7 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/common/XMLValidator.java @@ -0,0 +1,103 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.common; + + +import java.io.FileInputStream; +import java.io.IOException; + +import javax.xml.XMLConstants; +import javax.xml.transform.Source; +import javax.xml.transform.stream.StreamSource; +import javax.xml.validation.Schema; +import javax.xml.validation.SchemaFactory; +import javax.xml.validation.Validator; + +import org.apache.commons.io.IOUtils; +import org.onap.so.logger.MessageEnum; +import org.onap.so.logger.MsoAlarmLogger; +import org.onap.so.logger.MsoLogger; +import org.xml.sax.SAXException; + +public class XMLValidator { + + private static String XSDS_PATH; + + static { + String prefixMsoPropertiesPath = System.getProperty ("mso.config.path"); + if (prefixMsoPropertiesPath == null) { + prefixMsoPropertiesPath = ""; + } + XSDS_PATH = prefixMsoPropertiesPath + "xsds/"; + } + + private String stringXsd; + private String errorMsg = null; + private SchemaFactory factory; + private Schema schema; + + private static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.APIH, XMLValidator.class); + private static MsoAlarmLogger alarmLogger = new MsoAlarmLogger (); + + public XMLValidator (String xsdFile){ + + try (FileInputStream xsdStream = new FileInputStream (XSDS_PATH + xsdFile)) { + + stringXsd = IOUtils.toString (xsdStream); + + factory = SchemaFactory.newInstance (XMLConstants.W3C_XML_SCHEMA_NS_URI); + factory.setResourceResolver (new PathResourceResolver (XSDS_PATH)); + factory.setFeature (XMLConstants.FEATURE_SECURE_PROCESSING, true); + + String quotedXsd = stringXsd.replaceAll (""", "\""); + Source src = new StreamSource (new java.io.StringReader (quotedXsd)); + schema = factory.newSchema (src); + + } catch (IOException | SAXException e) { + + msoLogger.debug ("Cannot open file " + XSDS_PATH + xsdFile, e); + errorMsg = "ErrorDetails: xsd file " + xsdFile + "could not be opened - " + e.getMessage (); + } + } + + // Returns null when XML valid, otherwise returns error details. + public String isXmlValid (String stringXml) { + try { + if (errorMsg != null && !errorMsg.isEmpty ()) { + return errorMsg; + } + Source src2 = new StreamSource (new java.io.StringReader (stringXml)); + Validator validator = schema.newValidator (); + validator.validate (src2); + + } catch (IOException | SAXException e) { + msoLogger.debug ("Exception: ", e); + return "ErrorDetails: " + e.getMessage (); + + } catch (Exception e) { + msoLogger.error (MessageEnum.APIH_CANNOT_READ_SCHEMA, "", "", MsoLogger.ErrorCode.SchemaError, "APIH cannot read schema file", e); + alarmLogger.sendAlarm ("MsoConfigurationError", MsoAlarmLogger.CRITICAL, "Unable to read the schema file"); + return "ErrorDetails: " + "Unable to read the schema file"; + } + + return null; + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/recipe/CamundaClientErrorHandler.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/recipe/CamundaClientErrorHandler.java new file mode 100644 index 0000000000..d801a94c9b --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandler/recipe/CamundaClientErrorHandler.java @@ -0,0 +1,51 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandler.recipe; + +import java.io.IOException; + +import org.onap.so.logger.MsoLogger; +import org.springframework.http.HttpStatus; +import org.springframework.http.client.ClientHttpResponse; +import org.springframework.web.client.ResponseErrorHandler; + + + +public class CamundaClientErrorHandler implements ResponseErrorHandler{ + + private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH, CamundaClientErrorHandler.class); + + @Override + public void handleError(ClientHttpResponse response) throws IOException { + + msoLogger.debug(response.getBody().toString()); + //msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.ERROR, + // MsoLogger.ResponseCode.CommunicationError, e.getMessage(), "BPMN", fullURL, null); + } + + @Override + public boolean hasError(ClientHttpResponse response) throws IOException { + HttpStatus.Series series = response.getStatusCode().series(); + return (HttpStatus.Series.CLIENT_ERROR.equals(series) + || HttpStatus.Series.SERVER_ERROR.equals(series)); + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Action.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Action.java new file mode 100644 index 0000000000..e920db2fd2 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Action.java @@ -0,0 +1,45 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra; + +/* + * Enum for Status values returned by API Handler to Tail-F +*/ +public enum Action { + createInstance, + updateInstance, + deleteInstance, + configureInstance, + replaceInstance, + activateInstance, + deactivateInstance, + enablePort, + disablePort, + addRelationships, + removeRelationships, + inPlaceSoftwareUpdate, + applyUpdatedConfig, + completeTask, + assignInstance, + unassignInstance, + compareModel, + scaleInstance +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Constants.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Constants.java new file mode 100644 index 0000000000..fe105a7637 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Constants.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra; + + +public class Constants { + + private Constants() { + } + + public static final String REQUEST_ID_PATH = "/{request-id}"; + + public static final String STATUS_SUCCESS = "SUCCESS"; + + public static final String MODIFIED_BY_APIHANDLER = "APIH"; + + public static final long PROGRESS_REQUEST_COMPLETED = 100L; + public static final long PROGRESS_REQUEST_RECEIVED = 0L; + public static final long PROGRESS_REQUEST_IN_PROGRESS = 20L; + + public static final String VNF_TYPE_WILDCARD = "*"; + + public static final String VOLUME_GROUP_COMPONENT_TYPE = "VOLUME_GROUP"; + + public static final String VALID_INSTANCE_NAME_FORMAT = "^[a-zA-Z][a-zA-Z0-9._-]*$"; + + public static final String A_LA_CARTE = "aLaCarte"; + + public final static String MSO_PROP_APIHANDLER_INFRA = "MSO_PROP_APIHANDLER_INFRA"; + + public final static String VNF_REQUEST_SCOPE = "vnf"; + public final static String SERVICE_INSTANCE_PATH = "/serviceInstances"; + public final static String SERVICE_INSTANTIATION_PATH = "/serviceInstantiation"; +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Messages.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Messages.java new file mode 100644 index 0000000000..555c536efb --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Messages.java @@ -0,0 +1,56 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra; + + +import java.util.HashMap; +import java.util.Map; + +import org.onap.so.apihandler.common.ErrorNumbers; + +public class Messages { + + protected static final Map<String,String> errors = new HashMap<>(); + static { + errors.put(ErrorNumbers.REQUEST_FAILED_SCHEMA_VALIDATION + "_service", "Service request FAILED schema validation. %s"); + errors.put(ErrorNumbers.REQUEST_FAILED_SCHEMA_VALIDATION + "_feature", "Feature request FAILED schema validation. %s"); + errors.put(ErrorNumbers.RECIPE_DOES_NOT_EXIST, "Recipe for %s-type and action specified does not exist in catalog %s"); + errors.put(ErrorNumbers.SERVICE_PARAMETERS_FAILED_SCHEMA_VALIDATION, "Service specific parameters passed in request FAILED schema validation. %s"); + + errors.put(ErrorNumbers.LOCKED_CREATE_ON_THE_SAME_VNF_NAME_IN_PROGRESS, "%s-name (%s) is locked (status = %s) because already working on a CREATE request with same %s-name."); + errors.put(ErrorNumbers.LOCKED_SAME_ACTION_AND_VNF_ID, "%s-id (%s) is locked (status = %s) because already working on a request with same action (%s) for this %s-id."); + errors.put(ErrorNumbers.REQUEST_TIMED_OUT, "Service request timed out before completing"); + errors.put(ErrorNumbers.ERROR_FROM_BPEL, "BPEL returned an error: %s"); + errors.put(ErrorNumbers.NO_COMMUNICATION_TO_BPEL, "Could not communicate with BPEL %s"); + errors.put(ErrorNumbers.NO_RESPONSE_FROM_BPEL, "No response from BPEL %s"); + errors.put(ErrorNumbers.COULD_NOT_WRITE_TO_REQUESTS_DB, "Could not insert or update record in MSO_REQUESTS DB %s"); + errors.put(ErrorNumbers.NO_COMMUNICATION_TO_REQUESTS_DB, "Could not communicate with MSO_REQUESTS DB %s"); + errors.put(ErrorNumbers.NO_COMMUNICATION_TO_CATALOG_DB, "Could not communicate with MSO_CATALOG DB %s"); + errors.put(ErrorNumbers.ERROR_FROM_CATALOG_DB, "Received error from MSO_CATALOG DB %s"); + } + + private Messages(){ + } + + public static Map<String,String> getErrors() { + return errors; + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/ModelType.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/ModelType.java new file mode 100644 index 0000000000..7b3ea3a181 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/ModelType.java @@ -0,0 +1,32 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra; + +/* + * Enum for Status values returned by API Handler to Tail-F +*/ +public enum ModelType { + service, + vnf, + vfModule, + volumeGroup, + network +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/MsoException.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/MsoException.java new file mode 100644 index 0000000000..defc904b05 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/MsoException.java @@ -0,0 +1,26 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra; + +public enum MsoException { + ServiceException, + PolicyException, +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Status.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Status.java new file mode 100644 index 0000000000..fe9764a2f2 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Status.java @@ -0,0 +1,36 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra; + + +/* + * Enum for Status values returned by API Handler to Tail-F +*/ +public enum Status { + PENDING, + IN_PROGRESS, + COMPLETE, + COMPLETED, + FAILED, + TIMEOUT, + UNLOCKED, + PENDING_MANUAL_TASK +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ApiException.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ApiException.java new file mode 100644 index 0000000000..dc52bfcc6b --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ApiException.java @@ -0,0 +1,125 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.exceptions; + + +import java.util.List; + +import org.onap.so.apihandlerinfra.logging.AlarmLoggerInfo; +import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo; + +public abstract class ApiException extends Exception{ + /** + * + */ + private static final long serialVersionUID = 683162058616691134L; + private int httpResponseCode; + private String messageID; + private ErrorLoggerInfo errorLoggerInfo; + private AlarmLoggerInfo alarmLoggerInfo; + private List<String> variables; + + public ApiException(Builder builder){ + super(builder.message, builder.cause); + + this.httpResponseCode = builder.httpResponseCode; + this.messageID = builder.messageID; + this.variables = builder.variables; + this.errorLoggerInfo = builder.errorLoggerInfo; + this.alarmLoggerInfo = builder.alarmLoggerInfo; + this.variables = builder.variables; + } + + public ApiException(String message, Throwable cause) { + super(message, cause); + } + + public String getMessageID() { + return messageID; + } + + public int getHttpResponseCode() { + return httpResponseCode; + } + + public ErrorLoggerInfo getErrorLoggerInfo() { + return errorLoggerInfo; + } + + public AlarmLoggerInfo getAlarmLoggerInfo() { + return alarmLoggerInfo; + } + + public List<String> getVariables() { + return variables; + } + + public static class Builder<T extends Builder<T>> { + private String message; + private Throwable cause = null; + private int httpResponseCode; + private String messageID; + private ErrorLoggerInfo errorLoggerInfo = null; + private AlarmLoggerInfo alarmLoggerInfo = null; + private List<String> variables = null; + + public Builder(String message, int httpResponseCode, String messageID) { + this.message = message; + this.httpResponseCode = httpResponseCode; + this.messageID = messageID; + } + + public T message(String message) { + this.message = message; + return (T) this; + } + + public T cause(Throwable cause) { + this.cause = cause; + return (T) this; + } + + public T httpResponseCode(int httpResponseCode) { + this.httpResponseCode = httpResponseCode; + return (T) this; + } + + public T messageID(String messageID) { + this.messageID = messageID; + return (T) this; + } + + public T errorInfo(ErrorLoggerInfo errorLoggerInfo){ + this.errorLoggerInfo = errorLoggerInfo; + return (T) this; + } + + public T alarmInfo(AlarmLoggerInfo alarmLoggerInfo){ + this.alarmLoggerInfo = alarmLoggerInfo; + return (T) this; + } + + public T variables(List<String> variables) { + this.variables = variables; + return (T) this; + } + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ApiExceptionMapper.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ApiExceptionMapper.java new file mode 100644 index 0000000000..e0bcc71736 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ApiExceptionMapper.java @@ -0,0 +1,111 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.exceptions; + +import java.util.List; + +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.ExceptionMapper; +import javax.ws.rs.ext.Provider; + +import org.onap.so.apihandlerinfra.logging.AlarmLoggerInfo; +import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo; +import org.onap.so.logger.MessageEnum; +import org.onap.so.logger.MsoAlarmLogger; +import org.onap.so.logger.MsoLogger; +import org.onap.so.serviceinstancebeans.RequestError; +import org.onap.so.serviceinstancebeans.ServiceException; + + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +@Provider +public class ApiExceptionMapper implements ExceptionMapper<ApiException> { + + private static MsoLogger logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA, ApiExceptionMapper.class); + private static MsoAlarmLogger alarmLogger = new MsoAlarmLogger(); + @Override + public Response toResponse(ApiException exception) { + + return Response.status(exception.getHttpResponseCode()).entity(buildErrorString(exception)).build(); + } + + protected String buildErrorString(ApiException exception) { + String errorText = exception.getMessage(); + String messageId = exception.getMessageID(); + List<String> variables = exception.getVariables(); + ErrorLoggerInfo errorLoggerInfo = exception.getErrorLoggerInfo(); + AlarmLoggerInfo alarmLoggerInfo = exception.getAlarmLoggerInfo(); + + + if (errorText.length() > 1999) { + errorText = errorText.substring(0, 1999); + } + + writeErrorLog(errorText, errorLoggerInfo, alarmLoggerInfo); + + return buildServiceErrorResponse(errorText,messageId,variables); + + } + + protected String buildServiceErrorResponse(String errorText, String messageId, List<String> variables){ + RequestError re = new RequestError(); + ServiceException se = new ServiceException(); + se.setMessageId(messageId); + se.setText(errorText); + if (variables != null) { + for (String variable : variables) { + se.getVariables().add(variable); + } + } + re.setServiceException(se); + String requestErrorStr; + + ObjectMapper mapper = createObjectMapper(); + mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); + mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT); + try { + requestErrorStr = mapper.writeValueAsString(re); + } catch (JsonProcessingException e) { + String errorMsg = "Exception in buildServiceErrorResponse writing exceptionType to string " + e.getMessage(); + logger.error(MessageEnum.GENERAL_EXCEPTION, "BuildServiceErrorResponse", "", "", MsoLogger.ErrorCode.DataError, errorMsg, e); + return errorMsg; + } + + return requestErrorStr; + } + + protected void writeErrorLog(String errorText, ErrorLoggerInfo errorLogInfo, AlarmLoggerInfo alarmLogInfo) { + + if(errorLogInfo != null) + logger.error(errorLogInfo.getLoggerMessageType().toString(), errorLogInfo.getErrorSource(), errorLogInfo.getTargetEntity(), errorLogInfo.getTargetServiceName(), errorLogInfo.getErrorCode(), errorText); + if(alarmLogInfo != null){ + alarmLogger.sendAlarm(alarmLogInfo.getAlarm(),alarmLogInfo.getState(),alarmLogInfo.getDetail()); + } + } + + public ObjectMapper createObjectMapper(){ + return new ObjectMapper(); + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/BPMNFailureException.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/BPMNFailureException.java new file mode 100644 index 0000000000..8c215de213 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/BPMNFailureException.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.exceptions; + +public class BPMNFailureException extends ApiException { + + private static final String bpmnFailMessage = "Request Failed due to BPEL error with HTTP Status = $HTTPSTATUS"; + + private BPMNFailureException(Builder builder) { + super(builder); + } + + public static class Builder extends ApiException.Builder<Builder>{ + + + public Builder(String message, int httpResponseCode, String messageID) { + super(bpmnFailMessage.replaceAll ("\\$HTTPSTATUS", message),httpResponseCode,messageID); + } + + public BPMNFailureException build() { + return new BPMNFailureException(this); + } + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ClientConnectionException.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ClientConnectionException.java new file mode 100644 index 0000000000..cf4c9168ea --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ClientConnectionException.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.exceptions; + +public class ClientConnectionException extends ApiException { + + /** + * + */ + private static final long serialVersionUID = 1L; + private static final String clientFailMessage = "Client from $URL failed to connect"; + + private ClientConnectionException(Builder builder) { + super(builder); + } + + public static class Builder extends ApiException.Builder<Builder>{ + + public Builder(String message, int httpResponseCode, String messageID) { + super(clientFailMessage.replaceAll ("\\$URL", message),httpResponseCode,messageID); + } + + public ClientConnectionException build() { + return new ClientConnectionException(this); + } + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/DuplicateRequestException.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/DuplicateRequestException.java new file mode 100644 index 0000000000..718dc6421d --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/DuplicateRequestException.java @@ -0,0 +1,47 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.exceptions; + +public class DuplicateRequestException extends ApiException { + + private static final String duplicateFailMessage = "Error: Locked instance - This %s (%s) " + "already has a request being worked with a status of %s (RequestId - %s). The existing request must finish or be cleaned up before proceeding."; + + private DuplicateRequestException(Builder builder) { + super(builder); + } + + + public static class Builder extends ApiException.Builder<Builder>{ + + + public Builder(String requestScope,String instance, String requestStatus, String requestID, int httpResponseCode, String messageID) { + super(String.format(duplicateFailMessage,requestScope,instance,requestStatus,requestID),httpResponseCode,messageID); + + } + + + public DuplicateRequestException build() { + + return new DuplicateRequestException(this); + } + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/RecipeNotFoundException.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/RecipeNotFoundException.java new file mode 100644 index 0000000000..620103be4e --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/RecipeNotFoundException.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.exceptions; + + +public class RecipeNotFoundException extends ApiException { + + private RecipeNotFoundException(Builder builder) { + super(builder); + } + + public static class Builder extends ApiException.Builder<Builder> { + + + public Builder(String message, int httpResponseCode, String messageID) { + super(message, httpResponseCode, messageID); + } + + public RecipeNotFoundException build() { + + return new RecipeNotFoundException(this); + } + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ValidateException.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ValidateException.java new file mode 100644 index 0000000000..b0cf39e1a2 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/ValidateException.java @@ -0,0 +1,43 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.exceptions; + +public class ValidateException extends ApiException { + + + private ValidateException(Builder builder) { + super(builder); + } + + + public static class Builder extends ApiException.Builder<Builder>{ + + public Builder(String message, int httpResponseCode, String messageID) { + super(message,httpResponseCode,messageID); + } + + public ValidateException build() { + + return new ValidateException(this); + } + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/VfModuleNotFoundException.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/VfModuleNotFoundException.java new file mode 100644 index 0000000000..d80f2f7b48 --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/exceptions/VfModuleNotFoundException.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.exceptions; + +public class VfModuleNotFoundException extends ApiException { + + + /** + * + */ + private static final long serialVersionUID = 1L; + + private VfModuleNotFoundException(Builder builder) { + super(builder); + } + + public static class Builder extends ApiException.Builder<Builder>{ + + public Builder(String message, int httpResponseCode, String messageID) { + super(message,httpResponseCode,messageID); + } + public VfModuleNotFoundException build() { + + return new VfModuleNotFoundException(this); + } + } + +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/logging/AlarmLoggerInfo.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/logging/AlarmLoggerInfo.java new file mode 100644 index 0000000000..2746da4f2d --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/logging/AlarmLoggerInfo.java @@ -0,0 +1,84 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.logging; + +import java.io.Serializable; + +public class AlarmLoggerInfo implements Serializable{ + /** + * + */ + private static final long serialVersionUID = -6730979289437576112L; + private String alarm; + private int state; + private String detail; + + + private AlarmLoggerInfo(String alarm, int state, String detail){ + this.alarm = alarm; + this.state = state; + this.detail = detail; + } + + public int getState() { + return state; + } + + public String getAlarm() { + return alarm; + } + + public String getDetail() { + return detail; + } + + public static class Builder{ + private String alarm = ""; + private int state; + private String detail = ""; + + public Builder(String alarm, int state, String detail){ + this.alarm = alarm; + this.state = state; + this.detail = detail; + } + + public Builder alarm(String alarm){ + this.alarm = alarm; + return this; + } + + public Builder state(int state){ + this.state = state; + return this; + } + + public Builder detail(String detail){ + this.detail = detail; + return this; + } + + public AlarmLoggerInfo build(){ + return new AlarmLoggerInfo(alarm, state, detail); + } + + } +} diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/logging/ErrorLoggerInfo.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/logging/ErrorLoggerInfo.java new file mode 100644 index 0000000000..b0b154bc5c --- /dev/null +++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/logging/ErrorLoggerInfo.java @@ -0,0 +1,111 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.apihandlerinfra.logging; + +import java.io.Serializable; + +import org.onap.so.logger.MessageEnum; +import org.onap.so.logger.MsoLogger.ErrorCode; + + + +public class ErrorLoggerInfo implements Serializable{ + /** + * + */ + private static final long serialVersionUID = -2917784544098682110L; + private MessageEnum loggerMessageType; + private String errorSource; + private String targetEntity; + private String targetServiceName; + private ErrorCode errorCode; + + private ErrorLoggerInfo(MessageEnum loggerMessageType, String errorSource, String targetEntity, String targetServiceName, ErrorCode errorCode){ + this.loggerMessageType = loggerMessageType; + this.errorSource = errorSource; + this.targetEntity = targetEntity; + this.targetServiceName = targetServiceName; + this.errorCode = errorCode; + } + + public MessageEnum getLoggerMessageType() { + return loggerMessageType; + } + + public String getErrorSource() { + return errorSource; + } + + public String getTargetEntity() { + return targetEntity; + } + + public String getTargetServiceName() { + return targetServiceName; + } + + public ErrorCode getErrorCode() { + return errorCode; + } + + public static class Builder{ + private MessageEnum loggerMessageType; + private String errorSource = ""; + private String targetEntity = ""; + private String targetServiceName = ""; + private ErrorCode errorCode; + + public Builder(MessageEnum loggerMessageType, ErrorCode errorCode){ + this.loggerMessageType = loggerMessageType; + this.errorCode = errorCode; + } + + public Builder loggerMessageType(MessageEnum loggerMessageType){ + this.loggerMessageType = loggerMessageType; + return this; + } + + public Builder errorSource(String errorSource){ + this.errorSource = errorSource; + return this; + } + + public Builder targetEntity(String targetEntity){ + this.targetEntity = targetEntity; + return this; + } + + public Builder targetServiceName(String targetServiceName){ + this.targetServiceName = targetServiceName; + return this; + } + + public Builder errorCode(ErrorCode errorCode){ + this.errorCode = errorCode; + return this; + } + + public ErrorLoggerInfo build(){ + return new ErrorLoggerInfo(loggerMessageType, errorSource, targetEntity, targetServiceName, errorCode); + } + + } +} |