incubator-hise-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r.@apache.org
Subject svn commit: r954833 - in /incubator/hise/trunk/hise-services/src/main/java/org/apache/hise: engine/jaxws/HISEJaxWSService.java engine/store/HumanInteractionsCompiler.java lang/TaskDefinition.java runtime/Task.java runtime/TaskEvaluator.java
Date Tue, 15 Jun 2010 11:39:39 GMT
Author: rr
Date: Tue Jun 15 11:39:38 2010
New Revision: 954833

URL: http://svn.apache.org/viewvc?rev=954833&view=rev
Log:
HISE-35: part of input messages correct handling (fix thanks to Piotr Zagórski)

Modified:
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java
    incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java?rev=954833&r1=954832&r2=954833&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
(original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/jaxws/HISEJaxWSService.java
Tue Jun 15 11:39:38 2010
@@ -98,7 +98,7 @@ public class HISEJaxWSService implements
                     QName portType = (QName) c.get("javax.xml.ws.wsdl.interface");
                     QName operation2 = (QName) c.get("javax.xml.ws.wsdl.operation");
 
-                    Element body = DOMUtils.getFirstElement(request.getSOAPBody());
+                    Element body = request.getSOAPBody();
                     __log.debug("invoking " + request + " operation:" + operation + " portType:"
+ portType + " operation2:" + operation2);
                     Node approveResponseHeader = hiseEngine.receive(HISEJaxWSService.this,
portType, operation.getLocalPart(), body, request.getSOAPHeader());
                     SOAPMessage m = messageFactory.createMessage();

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java?rev=954833&r1=954832&r2=954833&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java
(original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/engine/store/HumanInteractionsCompiler.java
Tue Jun 15 11:39:38 2010
@@ -19,32 +19,35 @@
 
 package org.apache.hise.engine.store;
 
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
+import javax.wsdl.Definition;
+import javax.wsdl.PortType;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLReader;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.Unmarshaller;
 import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hise.lang.HumanInteractions;
 import org.apache.hise.lang.TaskDefinition;
-import org.apache.hise.lang.xsd.htd.TGenericHumanRole;
 import org.apache.hise.lang.xsd.htd.THumanInteractions;
+import org.apache.hise.lang.xsd.htd.TImport;
 import org.apache.hise.lang.xsd.htd.TNotification;
 import org.apache.hise.lang.xsd.htd.TTask;
 import org.apache.hise.lang.xsd.htd.TTaskInterface;
-import org.apache.hise.utils.DOMUtils;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
-import org.w3c.dom.Document;
 
 public class HumanInteractionsCompiler {
-    private static final Log log = LogFactory.getLog(HumanInteractionsCompiler.class);
 
+    private final Log log = LogFactory.getLog(HumanInteractionsCompiler.class);
     private Map<String, String> xmlNamespaces;
 
     private HumanInteractionsCompiler() {
@@ -54,7 +57,7 @@ public class HumanInteractionsCompiler {
         Validate.notNull(resource, "Specified resource is null");
         try {
             HumanInteractionsCompiler c = new HumanInteractionsCompiler();
-            log.debug("compiling " + resource);
+            LogFactory.getLog(HumanInteractionsCompiler.class).debug("compiling " + resource);
             return c.compile2(resource);
         } catch (Exception e) {
             throw new CompileException("Compile error for " + resource, e);
@@ -69,11 +72,23 @@ public class HumanInteractionsCompiler {
         {
             JAXBContext jaxbContext = JAXBContext.newInstance("org.apache.hise.lang.xsd.htd");
             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
-            DocumentBuilderFactory f = DOMUtils.getDocumentBuilderFactory();
-            f.setNamespaceAware(true);
-            DocumentBuilder b = f.newDocumentBuilder();
-            Document d = b.parse(htdXml.getInputStream());
-            hiDoc = ((JAXBElement<THumanInteractions>) unmarshaller.unmarshal(d)).getValue();
+            hiDoc = ((JAXBElement<THumanInteractions>) unmarshaller.unmarshal(htdXml.getInputStream())).getValue();
+        }
+
+        Set<Definition> definitions = new HashSet<Definition>();
+
+        for (TImport tImport : hiDoc.getImport()) {
+            if ("http://schemas.xmlsoap.org/wsdl/".equals(tImport.getImportType())) {
+                try {
+                    Resource wsdl = new ClassPathResource(tImport.getLocation());
+                    WSDLFactory wsdlf = WSDLFactory.newInstance();
+                    WSDLReader reader = wsdlf.newWSDLReader();
+                    Definition definition = reader.readWSDL(wsdl.getURL().toString());
+                    definitions.add(definition);
+                } catch (Exception ex) {
+                    log.error("Error during reading wsdl file.", ex);
+                }
+            }
         }
 
         HumanInteractions humanInteractions = new HumanInteractions();
@@ -82,12 +97,15 @@ public class HumanInteractionsCompiler {
             for (TTask tTask : hiDoc.getTasks().getTask()) {
                 TaskDefinition taskDefinition = new TaskDefinition(tTask, this.xmlNamespaces,
hiDoc.getTargetNamespace());
                 taskDefinition.setTaskInterface(tTask.getInterface());
-                
+
                 QName name = taskDefinition.getTaskName();
                 if (humanInteractions.getTaskDefinitions().containsKey(name)) {
                     throw new RuntimeException("Duplicate task found, name: " + name + "
resource: " + resource);
                 }
                 humanInteractions.getTaskDefinitions().put(name, taskDefinition);
+
+                QName portTypeName = taskDefinition.getTaskInterface().getPortType();
+                taskDefinition.setPortType(findPortType(portTypeName, definitions));
             }
         }
 
@@ -98,18 +116,31 @@ public class HumanInteractionsCompiler {
                 x.setOperation(tnote.getInterface().getOperation());
                 x.setPortType(tnote.getInterface().getPortType());
                 taskDefinition.setTaskInterface(x);
-                
+
                 QName name = taskDefinition.getTaskName();
                 if (humanInteractions.getTaskDefinitions().containsKey(name)) {
                     throw new RuntimeException("Duplicate task found, name: " + name + "
resource: " + resource);
                 }
                 humanInteractions.getTaskDefinitions().put(name, taskDefinition);
+
+                QName portTypeName = taskDefinition.getTaskInterface().getPortType();
+                taskDefinition.setPortType(findPortType(portTypeName, definitions));
             }
         }
 
         return humanInteractions;
     }
 
+    private PortType findPortType(QName portTypeName, Set<Definition> definitions)
{
+        for (Definition definition : definitions) {
+            PortType portType = (PortType) definition.getAllPortTypes().get(portTypeName);
+            if (portType != null) {
+                return portType;
+            }
+        }
+
+        return null;
+    }
     // /**
     // * Creates HumanInteractions instance, passing DOM Document instance to its constructor.
     // *

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java?rev=954833&r1=954832&r2=954833&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java
(original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/lang/TaskDefinition.java
Tue Jun 15 11:39:38 2010
@@ -22,6 +22,7 @@ package org.apache.hise.lang;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import javax.wsdl.PortType;
 
 import javax.xml.namespace.QName;
 
@@ -68,6 +69,8 @@ public class TaskDefinition {
      */
     private Map<String, String> xmlNamespaces;
 
+    private PortType portType;
+
     // ==================== CONSTRUCTOR =========================
 
     public TaskDefinition(TTask taskDefinition, Map<String, String> xmlNamespaces,
String targetNamespace) {
@@ -365,4 +368,13 @@ public class TaskDefinition {
     public TDeadlines getDeadlines() {
         return tTask.getDeadlines();
     }
+
+    public PortType getPortType() {
+        return portType;
+    }
+
+    public void setPortType(PortType portType) {
+        this.portType = portType;
+    }
+   
 }

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java?rev=954833&r1=954832&r2=954833&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java (original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/Task.java Tue
Jun 15 11:39:38 2010
@@ -22,9 +22,19 @@ package org.apache.hise.runtime;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import javax.wsdl.Operation;
+import javax.wsdl.Part;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
 
 import org.apache.commons.lang.Validate;
 import org.apache.commons.logging.Log;
@@ -43,6 +53,8 @@ import org.apache.hise.lang.xsd.htd.TOrg
 import org.apache.hise.lang.xsd.htd.TUserlist;
 import org.apache.hise.utils.DOMUtils;
 import org.apache.hise.utils.XmlUtils;
+import org.apache.ws.commons.schema.utils.NamespaceMap;
+import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 /**
@@ -66,24 +78,24 @@ public class Task {
     private TaskEvaluator taskEvaluator;
 
     private List<TaskStateListener> taskStateListeners;
-    
+
     private Job currentJob;
     private Date currentEventDateTime = Calendar.getInstance().getTime();
-    
+
     private String currentUser;
-    
+
     private DeadlineController deadlineController;
-    
+
     protected Task() {}
-    
+
     public Job getCurrentJob() {
         return currentJob;
     }
-    
+
     public void setCurrentJob(Job currentJob) {
         this.currentJob = currentJob;
     }
-    
+
     public Date getCurrentEventDateTime() {
         return currentEventDateTime;
     }
@@ -109,9 +121,9 @@ public class Task {
     }
 
     private Task(HISEEngineImpl engine, boolean notification) {
-        
+
         Validate.notNull(engine);
-        
+
         this.hiseEngine = engine;
 
         taskStateListeners = new ArrayList<TaskStateListener>();
@@ -161,32 +173,36 @@ public class Task {
                     }
                 }
             }
-            
+
             if (poSize == 1 && selected != null) {
                 //Nominate a single potential owner
                 setActualOwner(selected.getName());
             }
         }
     }
-    
+
     public static Task create(HISEEngineImpl engine, TaskDefinition taskDefinition, String
createdBy, Node requestXml, Node requestHeader) {
 
         Task t = new Task(engine, false);
         Validate.notNull(taskDefinition);
         Validate.isTrue(!taskDefinition.isNotification());
-        
+
+        Map<String, Node> inputParts = findInputParts(taskDefinition, requestXml);
+
         t.taskDefinition = taskDefinition;
         org.apache.hise.dao.Task taskDto = new org.apache.hise.dao.Task();
         taskDto.setTaskDefinitionKey(taskDefinition.getTaskName().toString());
         taskDto.setCreatedBy(createdBy);
         taskDto.setStatus(null);
-        taskDto.getInput().put("request", new Message("request", DOMUtils.domToString(requestXml)));
-        taskDto.getInput().put("requestHeader", new Message("requestHeader", DOMUtils.domToString(requestHeader)));
+        for(String partName: inputParts.keySet()) {
+            taskDto.getInput().put(partName, new Message(partName, DOMUtils.domToString(inputParts.get(partName))));
+        }
+//        taskDto.getInput().put("requestHeader", new Message("requestHeader", DOMUtils.domToString(requestHeader)));
         taskDto.setCreatedOn(new Date());
         taskDto.setActivationTime(new Date());
         taskDto.setEscalated(false);
         taskDto.setNotification(false);
-        
+
         engine.getHiseDao().persist(taskDto);
         t.taskDto = taskDto;
         try {
@@ -196,7 +212,7 @@ public class Task {
         }
 
         taskDto.setPeopleAssignments(t.getTaskEvaluator().evaluatePeopleAssignments());
-        
+
         try {
             t.setStatus(Status.READY);
         } catch (HiseIllegalStateException e) {
@@ -254,27 +270,67 @@ public class Task {
         // recalculatePriority();
     }
 
+    static Map<String, Node> findInputParts(TaskDefinition taskDefinition, Node requestXml)
{
+        Map<String, Node> inputParts = new HashMap<String, Node>();
+
+        Operation operation = taskDefinition.getPortType().getOperation(taskDefinition.getTaskInterface().getOperation(),
null, null);
+        if(operation == null) {
+            LogFactory.getLog(Task.class).error("Operation: " + taskDefinition.getTaskInterface().getOperation()
+ " not found in port type definition.");
+            return inputParts;
+        }
+
+        Map<String, Part> partsMap = operation.getInput().getMessage().getParts();
+        Node messagePart = null;
+        for (Part part : partsMap.values()) {
+            String name = part.getName();
+            QName element = part.getElementName();
+            QName type = part.getTypeName();
+            Element root = (Element) requestXml;            
+            XPath xPath = XPathFactory.newInstance().newXPath();
+            try {
+                if (element != null) {
+                    Map namespaceMap = new HashMap(1);
+                    namespaceMap.put("prefix", element.getNamespaceURI());
+                    NamespaceContext nc = new NamespaceMap(namespaceMap);
+                    xPath.setNamespaceContext(nc);
+                    messagePart = (Node) xPath.evaluate("prefix:" + element.getLocalPart(),
root, XPathConstants.NODE);
+                } else if (type != null) {
+                    messagePart = (Node) xPath.evaluate("child::*/" + part.getName(), root,
XPathConstants.NODE);
+                }
+            } catch (XPathExpressionException ex) {
+                LogFactory.getLog(Task.class).error("Can not get message part.", ex);
+            }
+            inputParts.put(name, messagePart);
+        }
+
+        return inputParts;
+    }
+
     public static Task createNotification(HISEEngineImpl engine, TaskDefinition taskDefinition,
String createdBy, Node requestXml, Node requestHeader) {
-        
+
         Validate.notNull(taskDefinition);
         Validate.isTrue(taskDefinition.isNotification());
-        
+
         Task t = new Task(engine, true);
-        
+
         t.taskDefinition = taskDefinition;
 
+        Map<String, Node> inputParts = findInputParts(taskDefinition, requestXml);
+
         org.apache.hise.dao.Task taskDto = new org.apache.hise.dao.Task();
         taskDto.setTaskDefinitionKey(taskDefinition.getTaskName().toString());
         taskDto.setCreatedBy(createdBy);
         taskDto.setStatus(null);
-        taskDto.getInput().put("request", new Message("request", DOMUtils.domToString(requestXml)));
-        taskDto.getInput().put("requestHeader", new Message("requestHeader", DOMUtils.domToString(requestHeader)));
+        for(String partName: inputParts.keySet()) {
+            taskDto.getInput().put(partName, new Message(partName, DOMUtils.domToString(inputParts.get(partName))));
+        }
+//        taskDto.getInput().put("requestHeader", new Message("requestHeader", DOMUtils.domToString(requestHeader)));
         taskDto.setCreatedOn(new Date());
         taskDto.setActivationTime(new Date());
         taskDto.setEscalated(false);
         taskDto.setNotification(true);
         engine.getHiseDao().persist(taskDto);
-        
+
         t.taskDto = taskDto;
         try {
             t.setStatus(Status.CREATED);
@@ -283,7 +339,7 @@ public class Task {
         }
 
         taskDto.setPeopleAssignments(t.getTaskEvaluator().evaluatePeopleAssignments());
-        
+
         try {
             t.setStatus(Status.READY);
         } catch (HiseIllegalStateException e) {
@@ -291,7 +347,7 @@ public class Task {
         }
 
         engine.getHiseDao().persist(taskDto);
-        
+
         return t;
     }
 
@@ -299,7 +355,7 @@ public class Task {
         setStatus(Status.RESERVED);
         taskDto.setActualOwner(user);
     }
-    
+
     public void setOutput(Node requestXml) {
         __log.debug("setting task output to: " + requestXml);
         this.taskDto.getOutput().put("request", new Message("request", DOMUtils.domToString(requestXml)));
@@ -559,7 +615,7 @@ public class Task {
         if (isCurrentUserInPotentialOwners()) {
             throw new HiseIllegalAccessException("User: " + currentUser + " is not a potential
owner.");
         }
-        
+
         // //TODO test
         // // check if the person is excluded from potential owners
         // if ((this.getExcludedOwners() != null && this.getExcludedOwners().contains(person)))
{
@@ -571,7 +627,7 @@ public class Task {
         // taskDto.addOperationComment(Operations.CLAIM, person);
         setStatus(Status.RESERVED);
     }
-    
+
     /**
      * TODO implement
      */
@@ -590,7 +646,7 @@ public class Task {
     public void release() throws HiseIllegalStateException {
         setStatus(Status.READY);
     }
-    
+
     /**
      * Suspends the task.
      * @throws HiseIllegalStateException 
@@ -598,7 +654,7 @@ public class Task {
     public void suspend() throws HiseIllegalStateException {
         setStatus(Status.SUSPENDED);
     }
-    
+
     public void suspendUntil(Date when) throws HiseIllegalStateException {
         Validate.notNull(when);
 
@@ -606,7 +662,7 @@ public class Task {
         Job job = hiseEngine.getHiseScheduler().createJob(when, "suspendUntil", taskDto);
         taskDto.setSuspendUntil(job);
     }
-    
+
     public void suspendUntilJobAction() throws HiseIllegalStateException {
         taskDto.setSuspendUntil(null);
         resume();
@@ -616,7 +672,7 @@ public class Task {
         taskDto.getDeadlines().remove(getCurrentJob());
         deadlineController.deadlineCrossed(getCurrentJob());
     }
-    
+
     public void resume() throws HiseIllegalStateException {
         setStatus(taskDto.getStatusBeforeSuspend());
     }
@@ -633,14 +689,14 @@ public class Task {
         setStatus(Status.COMPLETED);
         sendResponse();
     }
-    
+
     /**
      * FIXME is outcome a reponse?
      */
     private void sendResponse() {
         try {
             Node response = taskEvaluator.evaluateOutcome(taskDto.getStatus() == Status.COMPLETED);
-            hiseEngine.sendResponse(getTaskDefinition().getTaskName(), 
+            hiseEngine.sendResponse(getTaskDefinition().getTaskName(),
                     response,
                     taskEvaluator.createEprFromHeader(DOMUtils.parse(taskDto.getInput().get("requestHeader").getMessage()).getDocumentElement()));
         } catch (Exception e) {
@@ -652,10 +708,10 @@ public class Task {
         setStatus(Status.READY);
         taskDto.setActualOwner(null);
     }
-    
+
     public void forward(TOrganizationalEntity target) throws HiseIllegalStateException {
         Set<TaskOrgEntity> e = new HashSet<TaskOrgEntity>();
-        
+
         for (String user : XmlUtils.notNull(target.getUsers(), new TUserlist()).getUser())
{
             TaskOrgEntity x = new TaskOrgEntity();
             x.setGenericHumanRole(GenericHumanRole.POTENTIALOWNERS);
@@ -673,24 +729,24 @@ public class Task {
             x.setTask(taskDto);
             e.add(x);
         }
-        
+
         forward(e);
     }
-    
+
     public void forward(Set<TaskOrgEntity> targets) throws HiseIllegalStateException
{
         __log.debug("forwarding to " + targets);
         releaseOwner();
-        
+
         for (TaskOrgEntity x : taskDto.getPeopleAssignments()) {
             x.setTask(null);
             hiseEngine.getHiseDao().remove(x);
         }
         taskDto.getPeopleAssignments().clear();
         taskDto.getPeopleAssignments().addAll(targets);
-        
+
         tryNominateOwner();
     }
-    
+
 
     //    
     // /**
@@ -1143,16 +1199,16 @@ public class Task {
     // return result;
     // }
 
-    
+
     public void remove() {
         Validate.isTrue(taskDto.isNotification());
         hiseEngine.getHiseDao().remove(taskDto);
     }
-    
+
     public Node getInput(String part) {
         return DOMUtils.parse(taskDto.getInput().get(part).getMessage()).getDocumentElement();
     }
-    
+
     public Node getOutput(String part) {
         return DOMUtils.parse(taskDto.getOutput().get(part).getMessage()).getDocumentElement();
     }

Modified: incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java?rev=954833&r1=954832&r2=954833&view=diff
==============================================================================
--- incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java
(original)
+++ incubator/hise/trunk/hise-services/src/main/java/org/apache/hise/runtime/TaskEvaluator.java
Tue Jun 15 11:39:38 2010
@@ -50,8 +50,10 @@ import org.apache.hise.lang.xsd.htd.TToP
 import org.apache.hise.utils.DOMUtils;
 import org.apache.hise.utils.XQueryEvaluator;
 import org.apache.hise.utils.XmlUtils;
+import org.w3c.dom.DOMImplementation;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
 
 public class TaskEvaluator {
     
@@ -67,7 +69,11 @@ public class TaskEvaluator {
         public static Node getInput(String part) {
             TaskEvaluator te = (TaskEvaluator) XQueryEvaluator.contextObjectTL.get();
             try {
-                return DOMUtils.parse(te.task.getTaskDto().getInput().get(part).getMessage()).getDocumentElement();
+                if(te.task.getTaskDto().getInput().get(part) != null) {
+                    return DOMUtils.parse(te.task.getTaskDto().getInput().get(part).getMessage()).getDocumentElement();
+                } else {
+                    return null;
+                }
             } catch (Exception e) {
                 throw new RuntimeException("", e);
             }



Mime
View raw message