/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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. */ package org.kie.server.api.model; import java.util.ArrayList; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.drools.core.runtime.impl.ExecutionResultImpl; import org.drools.core.xml.jaxb.util.JaxbUnknownAdapter; import org.kie.server.api.model.admin.EmailNotification; import org.kie.server.api.model.admin.ExecutionErrorInstance; import org.kie.server.api.model.admin.ExecutionErrorInstanceList; import org.kie.server.api.model.admin.MigrationReportInstance; import org.kie.server.api.model.admin.MigrationReportInstanceList; import org.kie.server.api.model.admin.OrgEntities; import org.kie.server.api.model.admin.ProcessNode; import org.kie.server.api.model.admin.ProcessNodeList; import org.kie.server.api.model.admin.TaskNotification; import org.kie.server.api.model.admin.TaskNotificationList; import org.kie.server.api.model.admin.TaskReassignment; import org.kie.server.api.model.admin.TaskReassignmentList; import org.kie.server.api.model.admin.TimerInstance; import org.kie.server.api.model.admin.TimerInstanceList; import org.kie.server.api.model.cases.CaseAdHocFragment; import org.kie.server.api.model.cases.CaseAdHocFragmentList; import org.kie.server.api.model.cases.CaseComment; import org.kie.server.api.model.cases.CaseCommentList; import org.kie.server.api.model.cases.CaseDefinition; import org.kie.server.api.model.cases.CaseDefinitionList; import org.kie.server.api.model.cases.CaseFile; import org.kie.server.api.model.cases.CaseFileDataItem; import org.kie.server.api.model.cases.CaseFileDataItemList; import org.kie.server.api.model.cases.CaseInstance; import org.kie.server.api.model.cases.CaseInstanceList; import org.kie.server.api.model.cases.CaseMilestone; import org.kie.server.api.model.cases.CaseMilestoneDefinition; import org.kie.server.api.model.cases.CaseMilestoneList; import org.kie.server.api.model.cases.CaseRoleAssignment; import org.kie.server.api.model.cases.CaseRoleAssignmentList; import org.kie.server.api.model.cases.CaseStage; import org.kie.server.api.model.cases.CaseStageDefinition; import org.kie.server.api.model.cases.CaseStageList; import org.kie.server.api.model.definition.AssociatedEntitiesDefinition; import org.kie.server.api.model.definition.ProcessDefinition; import org.kie.server.api.model.definition.ProcessDefinitionList; import org.kie.server.api.model.definition.QueryDefinition; import org.kie.server.api.model.definition.QueryDefinitionList; import org.kie.server.api.model.definition.ServiceTasksDefinition; import org.kie.server.api.model.definition.SubProcessesDefinition; import org.kie.server.api.model.definition.TaskInputsDefinition; import org.kie.server.api.model.definition.TaskOutputsDefinition; import org.kie.server.api.model.definition.UserTaskDefinition; import org.kie.server.api.model.definition.UserTaskDefinitionList; import org.kie.server.api.model.definition.VariablesDefinition; import org.kie.server.api.model.dmn.DMNContextKS; import org.kie.server.api.model.dmn.DMNModelInfoList; import org.kie.server.api.model.dmn.DMNNodeStub; import org.kie.server.api.model.dmn.DMNResultKS; import org.kie.server.api.model.instance.*; import org.kie.server.api.model.type.JaxbBoolean; import org.kie.server.api.model.type.JaxbByte; import org.kie.server.api.model.type.JaxbCharacter; import org.kie.server.api.model.type.JaxbDouble; import org.kie.server.api.model.type.JaxbFloat; import org.kie.server.api.model.type.JaxbInteger; import org.kie.server.api.model.type.JaxbList; import org.kie.server.api.model.type.JaxbLong; import org.kie.server.api.model.type.JaxbMap; import org.kie.server.api.model.type.JaxbShort; import org.kie.server.api.model.type.JaxbString; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; @XmlRootElement(name="response") @XmlAccessorType(XmlAccessType.NONE) @XStreamAlias("response") public class ServiceResponse<T> { public static enum ResponseType { SUCCESS, FAILURE, NO_RESPONSE; } @XmlAttribute @XStreamAsAttribute private ServiceResponse.ResponseType type; @XmlAttribute @XStreamAsAttribute private String msg; @XmlElements({ // types model @XmlElement(name = "boolean-type", type = JaxbBoolean.class), @XmlElement(name = "byte-type", type = JaxbByte.class), @XmlElement(name = "char-type", type = JaxbCharacter.class), @XmlElement(name = "double-type", type = JaxbDouble.class), @XmlElement(name = "float-type", type = JaxbFloat.class), @XmlElement(name = "int-type", type = JaxbInteger.class), @XmlElement(name = "long-type", type = JaxbLong.class), @XmlElement(name = "short-type", type = JaxbShort.class), @XmlElement(name = "string-type", type = JaxbString.class), @XmlElement(name = "map-type", type = JaxbMap.class), @XmlElement(name = "list-type", type = JaxbList.class), @XmlElement(name = "array-list", type = ArrayList.class), //kie server model @XmlElement(name = "kie-server-info", type = KieServerInfo.class), @XmlElement(name = "kie-container", type = KieContainerResource.class), @XmlElement(name = "results", type = String.class), @XmlElement(name = "kie-containers", type = KieContainerResourceList.class), @XmlElement(name = "kie-scanner", type = KieScannerResource.class), @XmlElement(name = "release-id", type = ReleaseId.class), @XmlElement(name = "kie-server-state-info", type = KieServerStateInfo.class), // definition model @XmlElement(name = "process-associated-entities", type = AssociatedEntitiesDefinition.class), @XmlElement(name = "process-definition", type = ProcessDefinition.class), @XmlElement(name = "process-service-tasks", type = ServiceTasksDefinition.class), @XmlElement(name = "process-task-inputs", type = TaskInputsDefinition.class), @XmlElement(name = "process-task-outputs", type = TaskOutputsDefinition.class), @XmlElement(name = "user-task-definition", type = UserTaskDefinition.class), @XmlElement(name = "user-task-definitions", type = UserTaskDefinitionList.class), @XmlElement(name = "process-variables", type = VariablesDefinition.class), @XmlElement(name = "process-subprocesses", type = SubProcessesDefinition.class), @XmlElement(name = "process-definitions", type = ProcessDefinitionList.class), @XmlElement(name = "process-instance", type = ProcessInstance.class), @XmlElement(name = "process-instance-list", type = ProcessInstanceList.class), @XmlElement(name = "node-instance", type = NodeInstance.class), @XmlElement(name = "node-instance-list", type = NodeInstanceList.class), @XmlElement(name = "variable-instance", type = VariableInstance.class), @XmlElement(name = "variable-instance-list", type = VariableInstanceList.class), @XmlElement(name = "task-instance", type = TaskInstance.class), @XmlElement(name = "task-instance-list", type = TaskInstanceList.class), @XmlElement(name = "task-summary", type = TaskSummary.class), @XmlElement(name = "task-summary-list", type = TaskSummaryList.class), @XmlElement(name = "task-event-instance", type = TaskEventInstance.class), @XmlElement(name = "task-event-instance-list", type = TaskEventInstanceList.class), @XmlElement(name = "work-item-instance", type = WorkItemInstance.class), @XmlElement(name = "work-item-instance-list", type = WorkItemInstanceList.class), @XmlElement(name = "request-info-instance", type = RequestInfoInstance.class), @XmlElement(name = "request-info-instance-list", type = RequestInfoInstanceList.class), @XmlElement(name = "error-info-instance", type = ErrorInfoInstance.class), @XmlElement(name = "error-info-instance-list", type = ErrorInfoInstanceList.class), @XmlElement(name = "job-request-instance", type = JobRequestInstance.class), @XmlElement(name = "query-definition", type = QueryDefinition.class), @XmlElement(name = "query-definitions", type = QueryDefinitionList.class), @XmlElement(name = "document-instance", type = DocumentInstance.class), @XmlElement(name = "document-instance-list", type = DocumentInstanceList.class), // optaplanner entities @XmlElement(name = "solver-instance", type = SolverInstance.class), @XmlElement(name = "solver-instance-list", type = SolverInstanceList.class), @XmlElement(name = "execution-results", type = ExecutionResultImpl.class), // admin section @XmlElement(name = "migration-report-instance", type = MigrationReportInstance.class), @XmlElement(name = "migration-report-instance-list", type = MigrationReportInstanceList.class), @XmlElement(name = "email-notification", type = EmailNotification.class), @XmlElement(name = "process-node", type = ProcessNode.class), @XmlElement(name = "process-node-list", type = ProcessNodeList.class), @XmlElement(name = "timer-instance", type = TimerInstance.class), @XmlElement(name = "timer-instance-list", type = TimerInstanceList.class), @XmlElement(name = "org-entities", type = OrgEntities.class), @XmlElement(name = "task-notification", type = TaskNotification.class), @XmlElement(name = "task-notification-list", type = TaskNotificationList.class), @XmlElement(name = "task-reassignment", type = TaskReassignment.class), @XmlElement(name = "task-reassignment-list", type = TaskReassignmentList.class), @XmlElement(name = "execution-error", type = ExecutionErrorInstance.class), @XmlElement(name = "execution-error-list", type = ExecutionErrorInstanceList.class), // case management @XmlElement(name = "case-milestone", type = CaseMilestone.class), @XmlElement(name = "case-milestone-list", type = CaseMilestoneList.class), @XmlElement(name = "case-instance", type = CaseInstance.class), @XmlElement(name = "case-instance-list", type = CaseInstanceList.class), @XmlElement(name = "case-file", type = CaseFile.class), @XmlElement(name = "case-adhoc-fragment", type = CaseAdHocFragment.class), @XmlElement(name = "case-adhoc-fragment-list", type = CaseAdHocFragmentList.class), @XmlElement(name = "case-comment", type = CaseComment.class), @XmlElement(name = "case-comment-list", type = CaseCommentList.class), @XmlElement(name = "case-role-assignment", type = CaseRoleAssignment.class), @XmlElement(name = "case-role-assignment-list", type = CaseRoleAssignmentList.class), @XmlElement(name = "case-stage", type = CaseStage.class), @XmlElement(name = "case-stage-list", type = CaseStageList.class), @XmlElement(name = "case-definition", type = CaseDefinition.class), @XmlElement(name = "case-definition-list", type = CaseDefinitionList.class), @XmlElement(name = "case-stage-def", type = CaseStageDefinition.class), @XmlElement(name = "case-milestone-def", type = CaseMilestoneDefinition.class), @XmlElement(name = "case-file-data-item", type = CaseFileDataItem.class), @XmlElement(name = "case-file-data-item-list", type = CaseFileDataItemList.class), // Kie DMN @XmlElement(name = "dmn-evaluation-context", type = DMNContextKS.class), @XmlElement(name = "dmn-evaluation-result" , type = DMNResultKS.class), @XmlElement(name = "dmn-model-info-list" , type = DMNModelInfoList.class) }) private T result; public ServiceResponse() { } public ServiceResponse(ServiceResponse.ResponseType type, String msg) { this.type = type; this.msg = msg; } public ServiceResponse(ServiceResponse.ResponseType type, String msg, T result) { this.type = type; this.msg = msg; this.result = result; } public ServiceResponse.ResponseType getType() { return type; } public String getMsg() { return msg; } public void setType(ServiceResponse.ResponseType type) { this.type = type; } public void setMsg(String msg) { this.msg = msg; } public T getResult() { return result; } public void setResult(T result) { this.result = result; } @Override public String toString() { return "ServiceResponse[" + type + ", msg='" + msg + "']"; } }