Package org.intalio.tempo.workflow.util.xml

Examples of org.intalio.tempo.workflow.util.xml.InvalidInputFormatException


        dao=_taskDAOFactory.openConnection();
            OMElementQueue rootQueue = new OMElementQueue(requestElement);
            OMElement taskElement = requireElement(rootQueue, "task");
            Task task = new TaskUnmarshaller().unmarshalFullTask(taskElement);
            if (task instanceof PIPATask) {
                throw new InvalidInputFormatException("Not allowed to create() PIPA tasks");
            }
            String participantToken = requireElementValue(rootQueue, "participantToken");
            _server.create(dao,task, participantToken);
             return createOkResponse();
        } catch (Exception e) {
View Full Code Here


                    taskIDs.add(taskID);
                else
                    break;
            }
            if (taskIDs.isEmpty()) {
                throw new InvalidInputFormatException("At least one taskId element must be present");
            }
            String participantToken = requireElementValue(rootQueue, "participantToken");
            _server.delete(dao,taskIDs.toArray(new String[] {}), participantToken);
             return createOkResponse();
        } catch (Exception e) {
View Full Code Here

            String participantToken = requireElementValue(rootQueue, "participantToken");
            try {
                _server.removeAttachment(dao,taskID, new URL(attachmentURL), participantToken);
                }
            catch (MalformedURLException e) {
              throw new InvalidInputFormatException(e);
            }
            return createOkResponse();
        } catch (Exception e) {
           throw makeFault(e);
        }
View Full Code Here

            TaskState taskState;
            String taskStateStr = requireElementValue(rootQueue, "taskState");
            try {
                taskState = TaskState.valueOf(taskStateStr.toUpperCase());
            } catch (IllegalArgumentException e) {
                throw new InvalidInputFormatException("Unknown task state: '" + taskStateStr + "'");
            }
            String participantToken = requireElementValue(rootQueue, "participantToken");
            for(String taskId : taskIds)
              _server.reassign(dao,taskId, users, roles, taskState, participantToken);
            return createOkResponse();
View Full Code Here

            xmlCursor.dispose();
            return taskMetadata;
        } catch (InvalidInputFormatException e) {
            throw e;
        } catch (XmlException e) {
            throw new InvalidInputFormatException(e);
        }
    }
View Full Code Here

        }
        checkNS(taskMetadata);

        String taskID = taskMetadata.getTaskId();
        if (taskID == null) {
            throw new InvalidInputFormatException("No task id specified");
        }
        String taskStateStr = taskMetadata.getTaskState();
        String taskTypeStr = taskMetadata.getTaskType();
        String description = taskMetadata.getDescription();
        String processID = taskMetadata.getProcessId();
        String instanceID = taskMetadata.getInstanceId();
        AuthIdentifierSet userOwners = new AuthIdentifierSet(Arrays.asList(taskMetadata.getUserOwnerArray()));
        AuthIdentifierSet roleOwners = new AuthIdentifierSet(Arrays.asList(taskMetadata.getRoleOwnerArray()));

        Integer priority = null;
        if (taskMetadata.xgetPriority() != null && taskMetadata.xgetPriority().validate()) {
            priority = taskMetadata.getPriority();
        }

        String formURLStr = taskMetadata.getFormUrl();
        URI formURL = null;
        if (formURLStr != null) {
            try {
                formURL = new URI(formURLStr);
            } catch (URISyntaxException e) {
                throw new InvalidInputFormatException(e);
            }
        } else {
            throw new InvalidInputFormatException("No URL found for form");
        }

        String failureCode = taskMetadata.getFailureCode();
        String failureReason = taskMetadata.getFailureReason();
        expectElementValue(taskMetadata, "userProcessEndpoint");
        // TODO: these violate the WSDL! do something
        expectElementValue(taskMetadata, "userProcessNamespaceURI");
        String completeSOAPAction = taskMetadata.getUserProcessCompleteSOAPAction();
        Attachments attachmentsElement = taskMetadata.getAttachments();
        String isChainedBeforeStr = expectElementValue(taskMetadata, "isChainedBefore");
        String previousTaskID = expectElementValue(taskMetadata, "previousTaskId");

        Class<? extends Task> taskClass = TaskTypeMapper.getTypeClassByName(taskTypeStr);
        Task resultTask = null;
        TaskState taskState = null;

        if (!ITaskWithState.class.isAssignableFrom(taskClass)) {
            forbidParameter(taskStateStr, "task state");
            forbidParameter(failureCode, "failure code");
            forbidParameter(failureReason, "failure reason");
        } else {
            try {
                taskState = (taskStateStr == null) ? TaskState.READY : TaskState.valueOf(taskStateStr.toUpperCase());
            } catch (IllegalArgumentException e) {
                _logger.error("Error in unmarshalling task from metadata", e);
                throw new InvalidInputFormatException("Unknown task state: '" + taskStateStr + "'");
            }
        }
        if (IProcessBoundTask.class.isAssignableFrom(taskClass)) {
            if (taskMetadata.xgetProcessId() == null) {
                /*
                 * The following line will be commented to support versions of
                 * designer that do not generate the processId
                 */

                // throw new
                // InvalidInputFormatException("ProcessID not specified");
            }
        } else {
            forbidParameter(processID, "processID");
        }
        if (IInstanceBoundTask.class.isAssignableFrom(taskClass)) {
            if (taskMetadata.xgetInstanceId() == null) {
                /*
                 * The following line will be commented to support versions of
                 * designer that do not generate the InstanceId
                 */
                // throw new
                // InvalidInputFormatException("instanceID not specified");
            }
        } else {
            forbidParameter(instanceID, "instanceID");
        }
        if (ICompleteReportingTask.class.isAssignableFrom(taskClass)) {
            requireParameter(completeSOAPAction, "completion SOAPAction");
        } else {
            forbidParameter(completeSOAPAction, "completion SOAPAction");
        }
        if (!ITaskWithAttachments.class.isAssignableFrom(taskClass)) {
            forbidParameter(attachmentsElement, "task attachment(s)");
        }
        if (!IChainableTask.class.isAssignableFrom(taskClass)) {
            forbidParameter(isChainedBeforeStr, "is-chained-before flag");
            forbidParameter(previousTaskID, "previous chained task ID");
        }

        resultTask = TaskTypeMapper.getNewInstance(taskClass, taskID, formURL);

        resultTask.getUserOwners().addAll(userOwners);
        resultTask.getRoleOwners().addAll(roleOwners);

        resultTask.setDescription(description == null ? "" : description);

        try {
            Calendar creationDate = taskMetadata.getCreationDate();
            if (creationDate != null)
                resultTask.setCreationDate(creationDate.getTime());
            else
                resultTask.setCreationDate(new Date());
        } catch (XmlValueOutOfRangeException e) {
            resultTask.setCreationDate(new Date());
        }

        for (String action : actions) {
            ACL acl = readACL(taskMetadata, action);
            authorize(resultTask, action, acl);
        }

        if (ITaskWithState.class.isAssignableFrom(taskClass)) {
            ITaskWithState taskWithState = (ITaskWithState) resultTask;
            taskWithState.setState(taskState);
            if (taskWithState.getState().equals(TaskState.FAILED)) {
                requireParameter(failureCode, "failure code");

                taskWithState.setFailureCode(failureCode);
                taskWithState.setFailureReason(failureReason == null ? "" : failureReason);
            } else {
                forbidParameter(failureCode, "failure code");
                forbidParameter(failureReason, "failure reason");
            }
        }
        if (InitTask.class.isAssignableFrom(taskClass)) {
            InitTask task = (InitTask) resultTask;
            String uri1 = taskMetadata.getInitMessageNamespaceURI();
            if (uri1 != null)
                task.setInitMessageNamespaceURI(URI.create(uri1));
            String soap = taskMetadata.getInitOperationSOAPAction();
            if (soap != null)
                task.setInitOperationSOAPAction(soap);
            String uri2 = taskMetadata.getProcessEndpoint();
            if (uri2 != null)
                task.setProcessEndpoint(URI.create(uri2));
        }
        if (IProcessBoundTask.class.isAssignableFrom(taskClass)) {
            if (taskMetadata.xgetProcessId() != null && processID != null)
                ((IProcessBoundTask) resultTask).setProcessID(processID);
        }
        if (IInstanceBoundTask.class.isAssignableFrom(taskClass)) {
            if (taskMetadata.xgetInstanceId() != null && taskMetadata.getInstanceId() != null) {
                ((IInstanceBoundTask) resultTask).setInstanceId(instanceID);
            }
        }

        if (ICompleteReportingTask.class.isAssignableFrom(taskClass)) {
            ((ICompleteReportingTask) resultTask).setCompleteSOAPAction(completeSOAPAction);
        }
        if (ITaskWithAttachments.class.isAssignableFrom(taskClass)) {
            ITaskWithAttachments taskWithAttachments = (ITaskWithAttachments) resultTask;

            if (attachmentsElement != null) {
                for (int i = 0; i < attachmentsElement.sizeOfAttachmentArray(); i++) {
                    com.intalio.bpms.workflow.taskManagementServices20051109.Attachment attachmentElement = attachmentsElement.getAttachmentArray(i);

                    if (attachmentElement != null) {
                        // The following line has been added to handle the case
                        // where an attachment element is present
                        // but do not contain any data: no title,
                        // nodescription , ect...
                        // The reason why is this is added is to
                        // handle the initial initialization on
                        // Designer
                        // In which designer generates by default an
                        // attachment element as a part of the
                        // initialization of the message
                        // even if no attachment is used

                        // TODO: When Designer and Server will
                        // support "lazy initialization", this line
                        // can be omitted

                        XmlCursor attCursor = attachmentElement.newCursor();
                        try {
                            if (attCursor.getTextValue().trim().length() != 0) {
                                com.intalio.bpms.workflow.taskManagementServices20051109.AttachmentMetadata attachmentMetadata = attachmentElement
                                                .getAttachmentMetadata();
                                AttachmentMetadata metadata = new AttachmentMetadata();
                                String mimeType = attachmentMetadata.getMimeType();
                                if (mimeType != null) {
                                    metadata.setMimeType(mimeType);
                                }
                                String fileName = attachmentMetadata.getFileName();
                                if (fileName != null)
                                    metadata.setFileName(fileName);
                                String title = attachmentMetadata.getTitle();
                                if (title != null)
                                    metadata.setTitle(title);
                                String description2 = attachmentMetadata.getDescription();
                                if (description2 != null)
                                    metadata.setDescription(description2);

                                try {
                                    Calendar cal = attachmentMetadata.getCreationDate();
                                    if ((cal != null)) {
                                        metadata.setCreationDate(new XsdDateTime(cal.toString()).getTime());
                                    }
                                } catch (Exception e) {
                                    _logger.warn("Error in unmarshalling creation date in attachment from metadata");
                                    metadata.setCreationDate(new Date());
                                }

                                String payloadURLStr = attachmentElement.getPayloadUrl();
                                URL payloadURL;
                                try {
                                    payloadURL = new URL(payloadURLStr);
                                } catch (MalformedURLException e) {
                                    throw new InvalidInputFormatException(e);
                                }

                                Attachment attachment = new Attachment(metadata, payloadURL);
                                taskWithAttachments.addAttachment(attachment);
                            }
                        } finally {
                            attCursor.dispose();
                        }
                    }
                }
            }
        }
        if (IChainableTask.class.isAssignableFrom(taskClass)) {
            IChainableTask chainableTask = (IChainableTask) resultTask;
            if (isChainedBeforeStr != null) {
                if ("1".equals(isChainedBeforeStr) || "true".equals(isChainedBeforeStr)) {
                    if (previousTaskID == null) {
                        throw new InvalidInputFormatException("tms:previousTaskId is required " + "if tms:isChainedBefore is true");
                    }
                    chainableTask.setPreviousTaskID(previousTaskID);
                    chainableTask.setChainedBefore(true);
                } else {
                    if ((previousTaskID != null) && (!"".equals(previousTaskID))) {
                        throw new InvalidInputFormatException("tms:previousTaskId must be empty or not present " + "if tms:isChainedBefore is false");
                    }
                }
            } else {
                if (previousTaskID != null) {
                    throw new InvalidInputFormatException("tms:isChainedBefore is required " + "if tms:previousTaskId is present");
                }
            }
        }

        // / the following is added to support task deadlines
View Full Code Here

            throw new RequiredArgumentException("containerElement");
        }
        XmlCursor payloadCursor = containerElement.newCursor();
        try {
            if (!payloadCursor.toFirstChild()) {
                throw new InvalidInputFormatException("Payload container element must contain exactly one child element");
            }
            if (payloadCursor.toNextSibling()) {
                throw new InvalidInputFormatException("Task payload must consist of exactly one element.");
            }
        } finally {
            payloadCursor.dispose();
        }
    }
View Full Code Here

        if (containerElement == null) {
            throw new RequiredArgumentException("containerElement");
        }
        Iterator<OMElement> it = containerElement.getChildElements();
        if (!it.hasNext()) {
            throw new InvalidInputFormatException("Payload container element must contain exactly one child element");
        }
        Document result = null;
        OMElement firstPayloadElement = it.next();
        if (it.hasNext()) {
            throw new InvalidInputFormatException("Task payload must consist of exactly one element.");
        } else {
            result = new XmlTooling().convertOMToDOM(firstPayloadElement);
        }
        return result;
    }
View Full Code Here

            throw new RequiredArgumentException("containerElement");
        }
        XmlCursor payloadCursor = containerElement.newCursor();
        try {
            if (!payloadCursor.toFirstChild()) {
                throw new InvalidInputFormatException("No taskmetadata element");
            }
            QName qName = payloadCursor.getName();
            if (qName == null || qName.getNamespaceURI() == null || qName.getNamespaceURI().trim().length() == 0) {
                throw new InvalidInputFormatException("No namespace defined");
            }
        } finally {
            payloadCursor.dispose();
        }
    }
View Full Code Here

        if (name == null) {
            throw new RequiredArgumentException("name");
        }
        Class<? extends Task> typeClass = _typeMap.getInverse(name.toUpperCase());
        if (typeClass == null) {
            throw new InvalidInputFormatException("Invalid task type name: '" + name + "'");
        }
        return typeClass;
    }
View Full Code Here

TOP

Related Classes of org.intalio.tempo.workflow.util.xml.InvalidInputFormatException

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.